From eedcacab59d70ab7866983b5567ba98d05250309 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 13 Feb 2024 09:16:14 +0100 Subject: [PATCH] Get missing width for the font metrics --- .gitignore | 2 - README.md | 9 +++ fonts/OpenSans-Bold.ttf | Bin 0 -> 129784 bytes lib/Graphics/Fountainhead/Metrics.hs | 102 ++++++++++++++++++-------- lib/Graphics/Fountainhead/TrueType.hs | 5 +- 5 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 fonts/OpenSans-Bold.ttf diff --git a/.gitignore b/.gitignore index 82a75d5..b051778 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ /dist-newstyle/ /dist/ - -/fonts/ diff --git a/README.md b/README.md index 457e673..50010aa 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,12 @@ fountainhead --help for help. ## Usage + +TrueType and OpenType fonts consist of a sequence of tables and various +informations about the font are encoded in these tables. There are both +required and optional tables. The first table is a font directory and it +describes the overall structure of the font, what tables it contains and at what +offset other tables can be found. + +This library doesn't parse the whole font at once. The font directory has to be +parsed first and can be used then to parse further tables as needed. diff --git a/fonts/OpenSans-Bold.ttf b/fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a1398b338084cbaf0e99d89cb6089715baa78a6d GIT binary patch literal 129784 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 Left $ MetricsParseError initialResult (processedState, Right initialResult) -> do - nameEntry <- maybeMetricsError (MetricsRequiredTableMissingError "name") - $ findTableByTag "name" initialResult - NameTable{ nameRecord, variable } <- first MetricsParseError - $ parseTable nameEntry nameTableP processedState + let parseForMetrics' = parseForMetrics processedState initialResult + + NameTable{ nameRecord, variable } <- parseForMetrics' "name" nameTableP psNameIndex <- maybeMetricsError (MetricsNameRecordNotFound 6) $ findIndex ((6 ==) . getField @"nameID") nameRecord - headEntry <- maybeMetricsError (MetricsRequiredTableMissingError "head") - $ findTableByTag "head" initialResult - headTable@HeadTable{ unitsPerEm } <- first MetricsParseError - $ parseTable headEntry headTableP processedState + headTable@HeadTable{ unitsPerEm } <- parseForMetrics' "head" headTableP let scale = (1000.0 :: Float) / fromIntegral unitsPerEm - hheaEntry <- maybeMetricsError (MetricsRequiredTableMissingError "hhea") - $ findTableByTag "hhea" initialResult - HheaTable{ ascent, descent } <- first MetricsParseError - $ parseTable hheaEntry hheaTableP processedState + HheaTable{ ascent, descent, numOfLongHorMetrics } <- + parseForMetrics' "hhea" hheaTableP + PostTable{ postHeader } <- parseForMetrics' "post" postTableP - postEntry <- maybeMetricsError (MetricsRequiredTableMissingError "post") - $ findTableByTag "post" initialResult - PostTable{ postHeader } <- first MetricsParseError - $ parseTable postEntry postTableP processedState + (capHeight, os2BaseFields) <- getCapHeight processedState initialResult + let Os2BaseFields{ usWeightClass, panose } = os2BaseFields - (capHeight, weightClass) <- getCapHeight processedState initialResult + HmtxTable{ hMetrics } <- parseForMetrics' "hmtx" + $ hmtxTableP numOfLongHorMetrics + + let fixedPitchFlag = if getField @"isFixedPitch" postHeader > 0 then Just FixedPitch else Nothing + isSerifFlag = if isSerif $ getField @"bSerifStyle" panose then Just Serif else Nothing pure $ FontDescriptor { fontName = variableText nameRecord variable psNameIndex , flags = [] - , stemV = calculateStemV $ fromIntegral weightClass - , missingWidth = 0 + , stemV = calculateStemV $ fromIntegral usWeightClass + , missingWidth = fromIntegral $ scalePs scale + $ getField @"advanceWidth" $ NonEmpty.head hMetrics , fontBBox = calculateBoundingBox scale headTable , italicAngle = realToFrac $ getField @"italicAngle" postHeader , capHeight = fromIntegral $ scalePs scale capHeight @@ -163,15 +170,12 @@ collectMetrics fontFile ttfContents = where calculateStemV weightClass = 10 + 220 * (weightClass - 50) / 900 getCapHeight processedState initialResult = do - os2Entry <- maybeMetricsError (MetricsRequiredTableMissingError "OS/2") - $ findTableByTag "OS/2" initialResult - os2Table <- first MetricsParseError - $ parseTable os2Entry os2TableP processedState + os2Table <- parseForMetrics processedState initialResult "OS/2" os2TableP case os2Table of - Os2Version4CommonFields Os2BaseFields{ usWeightClass } Os2Version4Fields{ sCapHeight } -> - Right (sCapHeight, usWeightClass) - Os2Version5 Os2BaseFields{ usWeightClass } _ Os2Version5Fields{ sCapHeight } -> - Right (sCapHeight, usWeightClass) + Os2Version4CommonFields os2BaseFields Os2Version4Fields{ sCapHeight } -> + Right (sCapHeight, os2BaseFields) + Os2Version5 os2BaseFields _ Os2Version5Fields{ sCapHeight } -> + Right (sCapHeight, os2BaseFields) _ -> Left UnsupportedOs2VersionError calculateBoundingBox scale HeadTable{ xMin, xMax, yMin, yMax } = let xMin' = fromIntegral $ scalePs scale xMin @@ -179,7 +183,7 @@ collectMetrics fontFile ttfContents = xMax' = fromIntegral $ scalePs scale xMax yMax' = fromIntegral $ scalePs scale yMax in FontBBox xMin' yMin' xMax' yMax' - scalePs :: Float -> Int16 -> Int16 + scalePs :: Integral a => Float -> a -> Int16 scalePs scale value = truncate $ fromIntegral value * scale variableText records variables recordIndex = let NameRecord{ platformID } = records !! recordIndex @@ -187,5 +191,39 @@ collectMetrics fontFile ttfContents = in if platformID == 1 then Text.decodeUtf8 variable else Text.decodeUtf16BE variable - maybeMetricsError metricsError Nothing = Left metricsError - maybeMetricsError _ (Just result) = Right result + +parseForMetrics + :: forall a + . ParseState + -> FontDirectory + -> String + -> Parser a + -> Either MetricsError a +parseForMetrics processedState fontDirectory tableName tableParser = + let foundTable = findTableByTag tableName fontDirectory + missingError = MetricsRequiredTableMissingError tableName + parseTable' rawTable = parseTable rawTable tableParser processedState + in maybeMetricsError missingError foundTable + >>= first MetricsParseError . parseTable' + +maybeMetricsError :: forall a. MetricsError -> Maybe a -> Either MetricsError a +maybeMetricsError metricsError Nothing = Left metricsError +maybeMetricsError _ (Just result) = Right result + +isSerif :: BSerifStyle -> Bool +isSerif AnySerifStyle = False +isSerif NoFitSerifStyle = False +isSerif CoveSerifStyle = True +isSerif ObtuseCoveSerifStyle = True +isSerif SquareCoveSerifStyle = True +isSerif ObtuseSquareCoveSerifStyle = True +isSerif SquareSerifStyle = True +isSerif ThinSerifStyle = True +isSerif BoneSerifStyle = True +isSerif ExaggeratedSerifStyle =True +isSerif TriangleSerifStyle = True +isSerif NormalSansSerifStyle = False +isSerif ObtuseSansSerifStyle = False +isSerif PerpSansSerifStyle = False +isSerif FlaredSerifStyle = True +isSerif RoundedSerifStyle = True diff --git a/lib/Graphics/Fountainhead/TrueType.hs b/lib/Graphics/Fountainhead/TrueType.hs index 03852b5..ec8bb59 100644 --- a/lib/Graphics/Fountainhead/TrueType.hs +++ b/lib/Graphics/Fountainhead/TrueType.hs @@ -276,7 +276,10 @@ data PostHeader = PostHeader , italicAngle :: Fixed32 -- ^ Italic angle in degrees , underlinePosition :: Int16 -- ^ Underline position , underlineThickness :: Int16 -- ^ Underline thickness - , isFixedPitch :: Word32 -- ^ Font is monospaced; set to 1 if the font is monospaced and 0 otherwise (N.B., to maintain compatibility with older versions of the TrueType spec, accept any non-zero value as meaning that the font is monospaced) + -- | Font is monospaced; set to 1 if the font is monospaced and 0 otherwise + -- (N.B., to maintain compatibility with older versions of the TrueType + -- spec, accept any non-zero value as meaning that the font is monospaced) + , isFixedPitch :: Word32 , minMemType42 :: Word32 -- ^ Minimum memory usage when a TrueType font is downloaded as a Type 42 font , maxMemType42 :: Word32 -- ^ Maximum memory usage when a TrueType font is downloaded as a Type 42 font , minMemType1 :: Word32 -- ^ Minimum memory usage when a TrueType font is downloaded as a Type 1 font