Dump OS/2 panose fields
This commit is contained in:
parent
7eacf0a2c4
commit
7057ada9aa
@ -272,19 +272,41 @@ dumpOs2 = (dumpCaption "'OS/2' Table - OS/2 and Windows Metrics" <>) . go
|
||||
<> " ySuperscriptYOffset: " <> Text.Builder.decimal ySuperscriptYOffset <> newlineBuilder
|
||||
<> " yStrikeoutSize: " <> Text.Builder.decimal yStrikeoutSize <> newlineBuilder
|
||||
<> " yStrikeoutPosition: " <> Text.Builder.decimal yStrikeoutPosition <> newlineBuilder
|
||||
<> " sFamilyClass:" <> familyClass sFamilyClass
|
||||
<> " sFamilyClass:" <> familyClass sFamilyClass <> newlineBuilder
|
||||
<> " PANOSE:" <> newlineBuilder <> dumpPanose panose
|
||||
<> fold (Vector.imap dumpUnicodeRange ulUnicodeRange)
|
||||
<> " achVendID: '" <> achVendID' achVendID <> "'\n"
|
||||
achVendID' = Text.Builder.fromText . Text.decodeLatin1 . ByteString.pack . fmap fromIntegral . toList
|
||||
dumpUnicodeRange index value =
|
||||
let bits = index * 32
|
||||
parens = "( Bits " <> Text.Builder.decimal bits <> " - "
|
||||
<> Text.Builder.decimal (bits + 31) <> " ):"
|
||||
in " Unicode Range: " <> Text.Builder.decimal (index + 1)
|
||||
<> Text.Builder.fromLazyText (Text.Lazy.justifyLeft 25 ' ' (Text.Builder.toLazyText parens))
|
||||
<> paddedHexadecimal value
|
||||
<> newlineBuilder
|
||||
dumpPanose Panose{..}
|
||||
= " Family Kind: 0 'Any'"
|
||||
<> " Serif Style: 0 'Any'"
|
||||
<> " Weight: 0 'Any'"
|
||||
<> " Proportion: 0 'Any'"
|
||||
<> " Contrast: 0 'Any'"
|
||||
<> " Stroke: 0 'Any'"
|
||||
<> " Arm Style: 0 'Any'"
|
||||
<> " Lettreform: 0 'Any'"
|
||||
<> " Midline: 0 'Any'"
|
||||
<> " X-height: 0 'Any'"
|
||||
= " Family Kind: " <> dumpPanoseField bFamilyType
|
||||
<> " Serif Style: " <> dumpPanoseField bSerifStyle
|
||||
<> " Weight: " <> dumpPanoseField bWeight
|
||||
<> " Proportion: " <> dumpPanoseField bProportion
|
||||
<> " Contrast: " <> dumpPanoseField bContrast
|
||||
<> " Stroke: " <> dumpPanoseField bStrokeVariation
|
||||
<> " Arm Style: " <> dumpPanoseField bArmStyle
|
||||
<> " Lettreform: " <> dumpPanoseField bLetterform
|
||||
<> " Midline: " <> dumpPanoseField bMidline
|
||||
<> " X-height: " <> dumpPanoseField bXHeight
|
||||
dumpPanoseField field' =
|
||||
let numericField = Text.Builder.fromLazyText
|
||||
$ Text.Lazy.justifyLeft 8 ' '
|
||||
$ Text.Builder.toLazyText
|
||||
$ Text.Builder.decimal
|
||||
$ fromEnum field'
|
||||
in numericField
|
||||
<> Text.Builder.singleton '\''
|
||||
<> Text.Builder.fromString (show field')
|
||||
<> Text.Builder.singleton '\''
|
||||
<> newlineBuilder
|
||||
familyClass value =
|
||||
" " <> Text.Builder.decimal (value .>>. 8) <> " subclass = " <> Text.Builder.decimal (value .&. 0x00ff)
|
||||
weightClass classValue
|
||||
|
@ -1007,7 +1007,62 @@ data BLetterform
|
||||
| ObliqueRoundedLetterform
|
||||
| ObliqueOffCenterLetterform
|
||||
| ObliqueSquareLetterform
|
||||
deriving (Eq, Show)
|
||||
deriving Eq
|
||||
|
||||
instance Show BLetterform
|
||||
where
|
||||
show AnyLetterform = "Any"
|
||||
show NoFitLetterform = "No Fit"
|
||||
show NormalContactLetterform = "Normal/Contact"
|
||||
show NormalWeightedLetterform = "Normal/Weighted"
|
||||
show NormalBoxedLetterform = "Normal/Boxed"
|
||||
show NormalFlattenedLetterform = "Normal/Flattened"
|
||||
show NormalRoundedLetterform = "Normal/Rounded"
|
||||
show NormalOffCenterLetterform = "Normal/Off Center"
|
||||
show NormalSquareLetterform = "Normal/Square"
|
||||
show ObliqueContactLetterform = "Oblique/Contact"
|
||||
show ObliqueWeightedLetterform = "Oblique/Weighted"
|
||||
show ObliqueBoxedLetterform = "Oblique/Boxed"
|
||||
show ObliqueFlattenedLetterform = "Oblique/Flattened"
|
||||
show ObliqueRoundedLetterform = "Oblique/Rounded"
|
||||
show ObliqueOffCenterLetterform = "Oblique/Off Center"
|
||||
show ObliqueSquareLetterform = "Oblique/Square"
|
||||
|
||||
instance Enum BLetterform
|
||||
where
|
||||
fromEnum AnyLetterform = 0
|
||||
fromEnum NoFitLetterform = 1
|
||||
fromEnum NormalContactLetterform = 2
|
||||
fromEnum NormalWeightedLetterform = 3
|
||||
fromEnum NormalBoxedLetterform = 4
|
||||
fromEnum NormalFlattenedLetterform = 5
|
||||
fromEnum NormalRoundedLetterform = 6
|
||||
fromEnum NormalOffCenterLetterform = 7
|
||||
fromEnum NormalSquareLetterform = 8
|
||||
fromEnum ObliqueContactLetterform = 9
|
||||
fromEnum ObliqueWeightedLetterform = 10
|
||||
fromEnum ObliqueBoxedLetterform = 11
|
||||
fromEnum ObliqueFlattenedLetterform = 12
|
||||
fromEnum ObliqueRoundedLetterform = 13
|
||||
fromEnum ObliqueOffCenterLetterform = 14
|
||||
fromEnum ObliqueSquareLetterform = 15
|
||||
toEnum 0 = AnyLetterform
|
||||
toEnum 1 = NoFitLetterform
|
||||
toEnum 2 = NormalContactLetterform
|
||||
toEnum 3 = NormalWeightedLetterform
|
||||
toEnum 4 = NormalBoxedLetterform
|
||||
toEnum 5 = NormalFlattenedLetterform
|
||||
toEnum 6 = NormalRoundedLetterform
|
||||
toEnum 7 = NormalOffCenterLetterform
|
||||
toEnum 8 = NormalSquareLetterform
|
||||
toEnum 9 = ObliqueContactLetterform
|
||||
toEnum 10 = ObliqueWeightedLetterform
|
||||
toEnum 11 = ObliqueBoxedLetterform
|
||||
toEnum 12 = ObliqueFlattenedLetterform
|
||||
toEnum 13 = ObliqueRoundedLetterform
|
||||
toEnum 14 = ObliqueOffCenterLetterform
|
||||
toEnum 15 = ObliqueSquareLetterform
|
||||
toEnum _ = error "Unknown letterform"
|
||||
|
||||
data BMidline
|
||||
= AnyMidline
|
||||
@ -1024,7 +1079,56 @@ data BMidline
|
||||
| LowTrimmedMidline
|
||||
| LowPointedMidline
|
||||
| LowSerifedMidline
|
||||
deriving (Eq, Show)
|
||||
deriving Eq
|
||||
|
||||
instance Show BMidline
|
||||
where
|
||||
show AnyMidline = "Any"
|
||||
show NoFitMidline = "No Fit"
|
||||
show StandardTrimmedMidline = "Standard/Trimmed"
|
||||
show StandardPointedMidline = "Standard/Pointed"
|
||||
show StandardSerifedMidline = "Standard/Serifed"
|
||||
show HighTrimmedMidline = "High/Trimmed"
|
||||
show HighPointedMidline = "High/Pointed"
|
||||
show HighSerifedMidline = "High/Serifed"
|
||||
show ConstantTrimmedMidline = "Constant/Trimmed"
|
||||
show ConstantPointedMidline = "Constant/Pointed"
|
||||
show ConstantSerifedMidline = "Constant/Serifed"
|
||||
show LowTrimmedMidline = "Low/Trimmed"
|
||||
show LowPointedMidline = "Low/Pointed"
|
||||
show LowSerifedMidline = "Low/Serifed"
|
||||
|
||||
instance Enum BMidline
|
||||
where
|
||||
fromEnum AnyMidline = 0
|
||||
fromEnum NoFitMidline = 1
|
||||
fromEnum StandardTrimmedMidline = 2
|
||||
fromEnum StandardPointedMidline = 3
|
||||
fromEnum StandardSerifedMidline = 4
|
||||
fromEnum HighTrimmedMidline = 5
|
||||
fromEnum HighPointedMidline = 6
|
||||
fromEnum HighSerifedMidline = 7
|
||||
fromEnum ConstantTrimmedMidline = 8
|
||||
fromEnum ConstantPointedMidline = 9
|
||||
fromEnum ConstantSerifedMidline = 10
|
||||
fromEnum LowTrimmedMidline = 11
|
||||
fromEnum LowPointedMidline = 12
|
||||
fromEnum LowSerifedMidline = 13
|
||||
toEnum 0 = AnyMidline
|
||||
toEnum 1 = NoFitMidline
|
||||
toEnum 2 = StandardTrimmedMidline
|
||||
toEnum 3 = StandardPointedMidline
|
||||
toEnum 4 = StandardSerifedMidline
|
||||
toEnum 5 = HighTrimmedMidline
|
||||
toEnum 6 = HighPointedMidline
|
||||
toEnum 7 = HighSerifedMidline
|
||||
toEnum 8 = ConstantTrimmedMidline
|
||||
toEnum 9 = ConstantPointedMidline
|
||||
toEnum 10 = ConstantSerifedMidline
|
||||
toEnum 11 = LowTrimmedMidline
|
||||
toEnum 12 = LowPointedMidline
|
||||
toEnum 13 = LowSerifedMidline
|
||||
toEnum _ = error "Unknown midline"
|
||||
|
||||
data BXHeight
|
||||
= AnyXHeight
|
||||
@ -1035,7 +1139,38 @@ data BXHeight
|
||||
| DuckingSmallXHeight
|
||||
| DuckingStandardXHeight
|
||||
| DuckingLargeXHeight
|
||||
deriving (Eq, Show)
|
||||
deriving Eq
|
||||
|
||||
instance Show BXHeight
|
||||
where
|
||||
show AnyXHeight = "Any"
|
||||
show NoFitXHeight = "No Fit"
|
||||
show ConstantSmallXHeight = "Constant/Small"
|
||||
show ConstantStandardXHeight = "Constant/Standard"
|
||||
show ConstantLargeXHeight = "Constant/Large"
|
||||
show DuckingSmallXHeight = "Ducking/Small"
|
||||
show DuckingStandardXHeight = "Ducking/Standard"
|
||||
show DuckingLargeXHeight = "Ducking/Large"
|
||||
|
||||
instance Enum BXHeight
|
||||
where
|
||||
fromEnum AnyXHeight = 0
|
||||
fromEnum NoFitXHeight = 1
|
||||
fromEnum ConstantSmallXHeight = 2
|
||||
fromEnum ConstantStandardXHeight = 3
|
||||
fromEnum ConstantLargeXHeight = 4
|
||||
fromEnum DuckingSmallXHeight = 5
|
||||
fromEnum DuckingStandardXHeight = 6
|
||||
fromEnum DuckingLargeXHeight = 7
|
||||
toEnum 0 = AnyXHeight
|
||||
toEnum 1 = NoFitXHeight
|
||||
toEnum 2 = ConstantSmallXHeight
|
||||
toEnum 3 = ConstantStandardXHeight
|
||||
toEnum 4 = ConstantLargeXHeight
|
||||
toEnum 5 = DuckingSmallXHeight
|
||||
toEnum 6 = DuckingStandardXHeight
|
||||
toEnum 7 = DuckingLargeXHeight
|
||||
toEnum _ = error "Unknown X height"
|
||||
|
||||
-- * Kern table
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user