Dump OS/2 microsoft fields
This commit is contained in:
parent
7057ada9aa
commit
ea7f729058
@ -68,6 +68,9 @@ import Graphics.Fountainhead.TrueType
|
||||
, TrueMaxpTable(..)
|
||||
, nameStringOffset
|
||||
, Os2BaseFields(..)
|
||||
, Os2MicrosoftFields(..)
|
||||
, Os2Version1Fields(..)
|
||||
, Os2Version4Fields(..)
|
||||
, Os2Table(..)
|
||||
, Panose(..)
|
||||
)
|
||||
@ -250,12 +253,29 @@ dumpOs2 :: Os2Table -> Text.Builder.Builder
|
||||
dumpOs2 = (dumpCaption "'OS/2' Table - OS/2 and Windows Metrics" <>) . go
|
||||
where
|
||||
go = \case
|
||||
Os2Version0 baseFields _ -> dumpBaseFields baseFields
|
||||
Os2Version1 baseFields _ _ -> dumpBaseFields baseFields
|
||||
Os2Version2 baseFields _ _ -> dumpBaseFields baseFields
|
||||
Os2Version3 baseFields _ _ -> dumpBaseFields baseFields
|
||||
Os2Version4 baseFields _ _ -> dumpBaseFields baseFields
|
||||
Os2Version5 baseFields _ _ -> dumpBaseFields baseFields
|
||||
Os2Version0 baseFields msFields -> dumpBaseFields baseFields
|
||||
<> maybe "" dumpMicrosoftFields msFields
|
||||
Os2Version1 baseFields msFields extraFields -> dumpBaseFields baseFields
|
||||
<> dumpMicrosoftFields msFields <> dumpVersion1Fields extraFields
|
||||
Os2Version2 baseFields msFields extraFields -> dumpBaseFields baseFields
|
||||
<> dumpMicrosoftFields msFields <> dumpVersion4Fields extraFields
|
||||
Os2Version3 baseFields msFields extraFields -> dumpBaseFields baseFields
|
||||
<> dumpMicrosoftFields msFields <> dumpVersion4Fields extraFields
|
||||
Os2Version4 baseFields msFields extraFields -> dumpBaseFields baseFields
|
||||
<> dumpMicrosoftFields msFields <> dumpVersion4Fields extraFields
|
||||
Os2Version5 baseFields msFields _ -> dumpBaseFields baseFields
|
||||
<> dumpMicrosoftFields msFields
|
||||
dumpVersion1Fields Os2Version1Fields{..}
|
||||
= " CodePage Range 1( Bits 0 - 31 ): " <> paddedHexadecimal ulCodePageRange1 <> newlineBuilder
|
||||
<> " CodePage Range 2( Bits 32- 63 ): " <> paddedHexadecimal ulCodePageRange2 <> newlineBuilder
|
||||
dumpVersion4Fields Os2Version4Fields{..}
|
||||
= dumpVersion1Fields (Os2Version1Fields ulCodePageRange1 ulCodePageRange2)
|
||||
dumpMicrosoftFields Os2MicrosoftFields{..}
|
||||
= " sTypoAscender: " <> Text.Builder.decimal sTypoAscender <> newlineBuilder
|
||||
<> " sTypoDescender: " <> Text.Builder.decimal sTypoDescender <> newlineBuilder
|
||||
<> " sTypoLineGap: " <> Text.Builder.decimal sTypoLineGap <> newlineBuilder
|
||||
<> " usWinAscent: " <> Text.Builder.decimal usWinAscent <> newlineBuilder
|
||||
<> " usWinDescent: " <> Text.Builder.decimal usWinDescent <> newlineBuilder
|
||||
dumpBaseFields Os2BaseFields{..}
|
||||
= " 'OS/2' version: " <> Text.Builder.decimal version <> newlineBuilder
|
||||
<> " xAvgCharWidth: " <> Text.Builder.decimal xAvgCharWidth <> newlineBuilder
|
||||
@ -276,6 +296,15 @@ dumpOs2 = (dumpCaption "'OS/2' Table - OS/2 and Windows Metrics" <>) . go
|
||||
<> " PANOSE:" <> newlineBuilder <> dumpPanose panose
|
||||
<> fold (Vector.imap dumpUnicodeRange ulUnicodeRange)
|
||||
<> " achVendID: '" <> achVendID' achVendID <> "'\n"
|
||||
<> " fsSelection: 0x" <> fsSelection' fsSelection <> newlineBuilder
|
||||
<> " usFirstCharIndex: 0x" <> halfPaddedHexadecimal fsFirstCharIndex <> newlineBuilder
|
||||
<> " usLastCharIndex: 0x" <> halfPaddedHexadecimal fsLastCharIndex <> newlineBuilder
|
||||
fsSelection' value =
|
||||
let description = fold
|
||||
[ if testBit value 0 then "Italic " else ""
|
||||
, if testBit value 5 then "Bold " else ""
|
||||
]
|
||||
in halfPaddedHexadecimal value <> " '" <> description <> "'"
|
||||
achVendID' = Text.Builder.fromText . Text.decodeLatin1 . ByteString.pack . fmap fromIntegral . toList
|
||||
dumpUnicodeRange index value =
|
||||
let bits = index * 32
|
||||
|
Loading…
Reference in New Issue
Block a user