[PDF] Always set the symbolic Flag for Fonts.
This should fix Chrome bug 124572 Review URL: https://codereview.appspot.com/7631045 git-svn-id: http://skia.googlecode.com/svn/trunk@8136 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
d34fda187c
commit
dcf9c19d38
@ -52,9 +52,7 @@ public:
|
||||
enum StyleFlags {
|
||||
kFixedPitch_Style = 0x00001,
|
||||
kSerif_Style = 0x00002,
|
||||
kSymbolic_Style = 0x00004,
|
||||
kScript_Style = 0x00008,
|
||||
kNonsymbolic_Style = 0x00020,
|
||||
kItalic_Style = 0x00040,
|
||||
kAllCaps_Style = 0x10000,
|
||||
kSmallCaps_Style = 0x20000,
|
||||
|
@ -31,6 +31,11 @@
|
||||
#include SK_SFNTLY_SUBSETTER
|
||||
#endif
|
||||
|
||||
// PDF's notion of symbolic vs non-symbolic is related to the character set, not
|
||||
// symbols vs. characters. Rarely is a font the right character set to call it
|
||||
// non-symbolic, so always call it symbolic. (PDF 1.4 spec, section 5.7.1)
|
||||
static const int kPdfSymbolic = 4;
|
||||
|
||||
namespace {
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -945,7 +950,7 @@ bool SkPDFFont::addCommonFontDescriptorEntries(int16_t defaultWidth) {
|
||||
const uint16_t emSize = fFontInfo->fEmSize;
|
||||
|
||||
fDescriptor->insertName("FontName", fFontInfo->fFontName);
|
||||
fDescriptor->insertInt("Flags", fFontInfo->fStyle);
|
||||
fDescriptor->insertInt("Flags", fFontInfo->fStyle | kPdfSymbolic);
|
||||
fDescriptor->insertScalar("Ascent",
|
||||
scaleFromFontUnits(fFontInfo->fAscent, emSize));
|
||||
fDescriptor->insertScalar("Descent",
|
||||
|
@ -499,9 +499,6 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics(
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kFixedPitch_Style;
|
||||
if (face->style_flags & FT_STYLE_FLAG_ITALIC)
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kItalic_Style;
|
||||
// We should set either Symbolic or Nonsymbolic; Nonsymbolic if the font's
|
||||
// character set is a subset of 'Adobe standard Latin.'
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kSymbolic_Style;
|
||||
|
||||
PS_FontInfoRec ps_info;
|
||||
TT_Postscript* tt_info;
|
||||
|
@ -1520,9 +1520,6 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics(
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kItalic_Style;
|
||||
}
|
||||
CTFontStylisticClass stylisticClass = symbolicTraits & kCTFontClassMaskTrait;
|
||||
if (stylisticClass & kCTFontSymbolicClass) {
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kSymbolic_Style;
|
||||
}
|
||||
if (stylisticClass >= kCTFontOldStyleSerifsClass && stylisticClass <= kCTFontSlabSerifsClass) {
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kSerif_Style;
|
||||
} else if (stylisticClass & kCTFontScriptsClass) {
|
||||
|
@ -1406,8 +1406,6 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics(
|
||||
if (otm.otmTextMetrics.tmItalic) {
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kItalic_Style;
|
||||
}
|
||||
// Setting symbolic style by default for now.
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kSymbolic_Style;
|
||||
if (otm.otmTextMetrics.tmPitchAndFamily & FF_ROMAN) {
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kSerif_Style;
|
||||
} else if (otm.otmTextMetrics.tmPitchAndFamily & FF_SCRIPT) {
|
||||
|
@ -1488,8 +1488,6 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics(
|
||||
if (os2Table->version.v0.fsSelection.field.Italic) {
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kItalic_Style;
|
||||
}
|
||||
//Symbolic (uses more than base latin).
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kSymbolic_Style;
|
||||
//Script
|
||||
if (SkPanose::FamilyType::Script == os2Table->version.v0.panose.bFamilyType.value) {
|
||||
info->fStyle |= SkAdvancedTypefaceMetrics::kScript_Style;
|
||||
|
Loading…
Reference in New Issue
Block a user