123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905 |
- unit fpparsettf_test;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils
- {$ifdef fptest}
- ,TestFramework
- {$else}
- ,fpcunit, testregistry
- {$endif}
- ,fpparsettf
- ;
- type
- { so we can access the protected methods }
- TMyTFFileInfo = class(TTFFileInfo);
- TBaseTestParseTTF = class(TTestCase)
- private
- FFileInfo: TMyTFFileInfo;
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- procedure LoadFont(const AFilename: string);
- public
- property FI: TMyTFFileInfo read FFileInfo;
- end;
- TTestEmptyParseTTF = class(TBaseTestParseTTF)
- published
- procedure TestEmptyTables;
- procedure TestEmptyDirectory;
- end;
- TTestLiberationFont = class(TBaseTestParseTTF)
- protected
- procedure SetUp; override;
- published
- { Offset Table }
- procedure TestDirectory_FontVersion;
- procedure TestDirectory_NumTables;
- procedure TestDirectory_SearchRange;
- procedure TestDirectory_EntrySelector;
- procedure TestDirectory_RangeShift;
- { THead data structure tests }
- procedure TestHead_FileVersion;
- procedure TestHead_FontRevision;
- procedure TestHead_CheckSumAdjustment;
- procedure TestHead_MagicNumber;
- procedure TestHead_Flags;
- procedure TestHead_UnitsPerEm;
- procedure TestHead_Created;
- procedure TestHead_Modified;
- procedure TestHead_BBox_xMin;
- procedure TestHead_BBox_yMin;
- procedure TestHead_BBox_xMax;
- procedure TestHead_BBox_yMax;
- procedure TestHead_MacStyle;
- procedure TestHead_LowestRecPPEM;
- procedure TestHead_FontDirectionHint;
- procedure TestHead_IndexToLocFormat;
- procedure TestHead_glyphDataFormat;
- { THHead data structure tests }
- procedure TestHHead_TableVersion;
- procedure TestHHead_Ascender;
- procedure TestHHead_Descender;
- procedure TestHHead_LineGap;
- procedure TestHHead_AdvanceWidthMax;
- procedure TestHHead_MinLeftSideBearing;
- procedure TestHHead_MinRightSideBearing;
- procedure TestHHead_XMaxExtent;
- procedure TestHHead_CaretSlopeRise;
- procedure TestHHead_CaretSlopeRun;
- procedure TestHHead_Reserved;
- procedure TestHHead_metricDataFormat;
- procedure TestHHead_numberOfHMetrics;
- { TCmapHeader data structure tests }
- procedure TestCMap_version;
- procedure TestCMap_SubTableCount;
- { TCmapSubTableEntry data structure tests }
- procedure TestCMapSubTables_1;
- procedure TestCMapSubTables_2;
- procedure TestCMapSubTables_3;
- { CmapUnicodeMap data structure tests }
- procedure TestCmapUnicodeMap_Format;
- procedure TestCmapUnicodeMap_Length;
- procedure TestCmapUnicodeMap_SegmentCount2;
- procedure TestCmapUnicodeMap_SearchRange;
- procedure TestCmapUnicodeMap_EntrySelector;
- procedure TestCmapUnicodeMap_RangeShift;
- { TUnicodeMapSegment data structure tests }
- procedure TestUnicodeMapSegment_1_StartCode;
- procedure TestUnicodeMapSegment_1_EndCode;
- procedure TestUnicodeMapSegment_1_IDDelta;
- procedure TestUnicodeMapSegment_1_IDRangeOffset;
- procedure TestUnicodeMapSegment_2_StartCode;
- procedure TestUnicodeMapSegment_2_EndCode;
- procedure TestUnicodeMapSegment_2_IDDelta;
- procedure TestUnicodeMapSegment_2_IDRangeOffset;
- procedure TestUnicodeMapSegment_127_StartCode;
- procedure TestUnicodeMapSegment_127_EndCode;
- procedure TestUnicodeMapSegment_127_IDDelta;
- procedure TestUnicodeMapSegment_127_IDRangeOffset;
- { hmtx - Horizontal Metrics data structure tests }
- procedure TestWidths_Size;
- procedure TestWidths_HorMetric_0_AdvanceWidth;
- procedure TestWidths_HorMetric_0_LSB;
- procedure TestWidths_HorMetric_1_AdvanceWidth;
- procedure TestWidths_HorMetric_1_LSB;
- procedure TestWidths_HorMetric_2586_AdvanceWidth;
- procedure TestWidths_HorMetric_2586_LSB;
- { maxp - Maximum Profile data structure tests }
- procedure TestMaxP_VersionNumber;
- procedure TestMaxP_numGlyphs;
- procedure TestMaxP_maxPoints;
- procedure TestMaxP_maxContours;
- procedure TestMaxP_maxCompositePoints;
- procedure TestMaxP_maxCompositeContours;
- procedure TestMaxP_maxZones;
- procedure TestMaxP_maxTwilightPoints;
- procedure TestMaxP_maxStorage;
- procedure TestMaxP_maxFunctionDefs;
- procedure TestMaxP_maxInstructionDefs;
- procedure TestMaxP_maxStackElements;
- procedure TestMaxP_maxSizeOfInstructions;
- procedure TestMaxP_maxComponentElements;
- procedure TestMaxP_maxComponentDepth;
- { OS2Data - OS/2 Data structure tests }
- procedure TestOS2Data_version;
- procedure TestOS2Data_xAvgCharWidth;
- procedure TestOS2Data_usWeightClass;
- procedure TestOS2Data_usWidthClass;
- procedure TestOS2Data_fsType;
- procedure TestOS2Data_ySubscriptXSize;
- Procedure TestOS2Data_ySubscriptYSize;
- Procedure TestOS2Data_ySubscriptXOffset;
- Procedure TestOS2Data_ySubscriptYOffset;
- Procedure TestOS2Data_ySuperscriptXSize;
- Procedure TestOS2Data_ySuperscriptYSize;
- Procedure TestOS2Data_ySuperscriptXOffset;
- Procedure TestOS2Data_ySuperscriptYOffset;
- Procedure TestOS2Data_yStrikeoutSize;
- Procedure TestOS2Data_yStrikeoutPosition;
- Procedure TestOS2Data_sFamilyClass;
- procedure TestOS2Data_Panose;
- procedure TestOS2Data_ulUnicodeRange1;
- procedure TestOS2Data_ulUnicodeRange2;
- procedure TestOS2Data_ulUnicodeRange3;
- procedure TestOS2Data_ulUnicodeRange4;
- procedure TestOS2Data_achVendID;
- procedure TestOS2Data_fsSelection;
- procedure TestOS2Data_usFirstCharIndex;
- procedure TestOS2Data_usLastCharIndex;
- procedure TestOS2Data_sTypoAscender;
- procedure TestOS2Data_sTypoDescender;
- procedure TestOS2Data_sTypoLineGap;
- procedure TestOS2Data_usWinAscent;
- procedure TestOS2Data_usWinDescent;
- procedure TestOS2Data_ulCodePageRange1;
- procedure TestOS2Data_ulCodePageRange2;
- procedure TestOS2Data_sxHeight;
- procedure TestOS2Data_sCapHeight;
- procedure TestOS2Data_usDefaultChar;
- procedure TestOS2Data_usBreakChar;
- procedure TestOS2Data_usMaxContext;
- { PostScript data structure }
- procedure TestPostScript_Format;
- procedure TestPostScript_ItalicAngle;
- procedure TestPostScript_UnderlinePosition;
- procedure TestPostScript_underlineThickness;
- procedure TestPostScript_isFixedPitch;
- procedure TestPostScript_minMemType42;
- procedure TestPostScript_maxMemType42;
- procedure TestPostScript_minMemType1;
- procedure TestPostScript_maxMemType1;
- { Utility functions }
- procedure TestGetGlyphIndex;
- procedure TestGetAdvanceWidth;
- end;
- TTestFreeSansFont = class(TBaseTestParseTTF)
- protected
- procedure SetUp; override;
- published
- { Offset Table }
- procedure TestDirectory_FontVersion;
- procedure TestDirectory_NumTables;
- procedure TestDirectory_SearchRange;
- procedure TestDirectory_EntrySelector;
- procedure TestDirectory_RangeShift;
- { THead data structure tests }
- procedure TestHead_FileVersion;
- procedure TestHead_FontRevision;
- procedure TestHead_CheckSumAdjustment;
- procedure TestHead_MagicNumber;
- procedure TestHead_Flags;
- procedure TestHead_UnitsPerEm;
- procedure TestHead_Created;
- procedure TestHead_Modified;
- procedure TestHead_BBox_xMin;
- procedure TestHead_BBox_yMin;
- procedure TestHead_BBox_xMax;
- procedure TestHead_BBox_yMax;
- procedure TestHead_MacStyle;
- procedure TestHead_LowestRecPPEM;
- procedure TestHead_FontDirectionHint;
- procedure TestHead_IndexToLocFormat;
- procedure TestHead_glyphDataFormat;
- { THHead data structure tests }
- procedure TestHHead_TableVersion;
- procedure TestHHead_Ascender;
- procedure TestHHead_Descender;
- procedure TestHHead_LineGap;
- procedure TestHHead_AdvanceWidthMax;
- procedure TestHHead_MinLeftSideBearing;
- procedure TestHHead_MinRightSideBearing;
- procedure TestHHead_XMaxExtent;
- procedure TestHHead_CaretSlopeRise;
- procedure TestHHead_CaretSlopeRun;
- procedure TestHHead_Reserved;
- procedure TestHHead_metricDataFormat;
- procedure TestHHead_numberOfHMetrics;
- { TCmapHeader data structure tests }
- procedure TestCMap_version;
- procedure TestCMap_SubTableCount;
- { TCmapSubTableEntry data structure tests }
- procedure TestCMapSubTables_1;
- procedure TestCMapSubTables_2;
- procedure TestCMapSubTables_3;
- procedure TestCMapSubTables_4;
- procedure TestCMapSubTables_5;
- { CmapUnicodeMap data structure tests }
- procedure TestCmapUnicodeMap_Format;
- procedure TestCmapUnicodeMap_Length;
- procedure TestCmapUnicodeMap_SegmentCount2;
- procedure TestCmapUnicodeMap_SearchRange;
- procedure TestCmapUnicodeMap_EntrySelector;
- procedure TestCmapUnicodeMap_RangeShift;
- { TUnicodeMapSegment data structure tests }
- procedure TestUnicodeMapSegment_1_StartCode;
- procedure TestUnicodeMapSegment_1_EndCode;
- procedure TestUnicodeMapSegment_1_IDDelta;
- procedure TestUnicodeMapSegment_1_IDRangeOffset;
- procedure TestUnicodeMapSegment_2_StartCode;
- procedure TestUnicodeMapSegment_2_EndCode;
- procedure TestUnicodeMapSegment_2_IDDelta;
- procedure TestUnicodeMapSegment_2_IDRangeOffset;
- procedure TestUnicodeMapSegment_127_StartCode;
- procedure TestUnicodeMapSegment_127_EndCode;
- procedure TestUnicodeMapSegment_127_IDDelta;
- procedure TestUnicodeMapSegment_127_IDRangeOffset;
- { hmtx - Horizontal Metrics data structure tests }
- procedure TestWidths_Size;
- procedure TestWidths_HorMetric_0_AdvanceWidth;
- procedure TestWidths_HorMetric_0_LSB;
- procedure TestWidths_HorMetric_1_AdvanceWidth;
- procedure TestWidths_HorMetric_1_LSB;
- procedure TestWidths_HorMetric_2586_AdvanceWidth;
- procedure TestWidths_HorMetric_2586_LSB;
- { maxp - Maximum Profile data structure tests }
- procedure TestMaxP_VersionNumber;
- procedure TestMaxP_numGlyphs;
- procedure TestMaxP_maxPoints;
- procedure TestMaxP_maxContours;
- procedure TestMaxP_maxCompositePoints;
- procedure TestMaxP_maxCompositeContours;
- procedure TestMaxP_maxZones;
- procedure TestMaxP_maxTwilightPoints;
- procedure TestMaxP_maxStorage;
- procedure TestMaxP_maxFunctionDefs;
- procedure TestMaxP_maxInstructionDefs;
- procedure TestMaxP_maxStackElements;
- procedure TestMaxP_maxSizeOfInstructions;
- procedure TestMaxP_maxComponentElements;
- procedure TestMaxP_maxComponentDepth;
- { OS2Data - OS/2 Data structure tests }
- procedure TestOS2Data_version;
- procedure TestOS2Data_xAvgCharWidth;
- procedure TestOS2Data_usWeightClass;
- procedure TestOS2Data_usWidthClass;
- procedure TestOS2Data_fsType;
- procedure TestOS2Data_ySubscriptXSize;
- Procedure TestOS2Data_ySubscriptYSize;
- Procedure TestOS2Data_ySubscriptXOffset;
- Procedure TestOS2Data_ySubscriptYOffset;
- Procedure TestOS2Data_ySuperscriptXSize;
- Procedure TestOS2Data_ySuperscriptYSize;
- Procedure TestOS2Data_ySuperscriptXOffset;
- Procedure TestOS2Data_ySuperscriptYOffset;
- Procedure TestOS2Data_yStrikeoutSize;
- Procedure TestOS2Data_yStrikeoutPosition;
- Procedure TestOS2Data_sFamilyClass;
- procedure TestOS2Data_Panose;
- procedure TestOS2Data_ulUnicodeRange1;
- procedure TestOS2Data_ulUnicodeRange2;
- procedure TestOS2Data_ulUnicodeRange3;
- procedure TestOS2Data_ulUnicodeRange4;
- procedure TestOS2Data_achVendID;
- procedure TestOS2Data_fsSelection;
- procedure TestOS2Data_usFirstCharIndex;
- procedure TestOS2Data_usLastCharIndex;
- procedure TestOS2Data_sTypoAscender;
- procedure TestOS2Data_sTypoDescender;
- procedure TestOS2Data_sTypoLineGap;
- procedure TestOS2Data_usWinAscent;
- procedure TestOS2Data_usWinDescent;
- procedure TestOS2Data_ulCodePageRange1;
- procedure TestOS2Data_ulCodePageRange2;
- procedure TestOS2Data_sxHeight;
- procedure TestOS2Data_sCapHeight;
- procedure TestOS2Data_usDefaultChar;
- procedure TestOS2Data_usBreakChar;
- procedure TestOS2Data_usMaxContext;
- { PostScript data structure }
- procedure TestPostScript_Format;
- procedure TestPostScript_ItalicAngle;
- procedure TestPostScript_UnderlinePosition;
- procedure TestPostScript_underlineThickness;
- procedure TestPostScript_isFixedPitch;
- procedure TestPostScript_minMemType42;
- procedure TestPostScript_maxMemType42;
- procedure TestPostScript_minMemType1;
- procedure TestPostScript_maxMemType1;
- end;
- implementation
- uses
- dateutils
- ,strutils
- ;
- const
- cFont1 = 'fonts' + PathDelim + 'LiberationSans-Regular.ttf';
- cFont2 = 'fonts' + PathDelim + 'FreeSans.ttf';
- { TTestEmptyParseTTF }
- procedure TBaseTestParseTTF.SetUp;
- begin
- FFileInfo := TMyTFFileInfo.Create;
- end;
- procedure TBaseTestParseTTF.TearDown;
- begin
- FFileInfo.Free;
- end;
- procedure TBaseTestParseTTF.LoadFont(const AFilename: string);
- begin
- Assert(FFileInfo <> nil, 'FFileInfo has not been instantiated');
- FFileInfo.LoadFromFile(AFilename);
- end;
- procedure TTestEmptyParseTTF.TestEmptyTables;
- begin
- AssertTrue('Failed on 1', Length(FI.Tables) = 0)
- end;
- procedure TTestEmptyParseTTF.TestEmptyDirectory;
- begin
- AssertEquals('Failed on 1', 0, FI.Directory.FontVersion.Major);
- AssertEquals('Failed on 2', 0, FI.Directory.FontVersion.Minor);
- AssertEquals('Failed on 3', 0, FI.Directory.Numtables);
- end;
- { TTestLiberationFont }
- procedure TTestLiberationFont.SetUp;
- begin
- inherited SetUp;
- LoadFont(cFont1);
- end;
- procedure TTestLiberationFont.TestDirectory_FontVersion;
- begin
- AssertEquals('Failed on 0', '00010000', IntToHex(FI.Directory.FontVersion.Version, 8));
- AssertEquals('Failed on Major Version', 1, FI.Directory.FontVersion.Major);
- AssertEquals('Failed on Minor Version', 0, FI.Directory.FontVersion.Minor);
- end;
- procedure TTestLiberationFont.TestDirectory_NumTables;
- begin
- AssertEquals('Failed on Numtables', 19, Int(FI.Directory.Numtables));
- end;
- procedure TTestLiberationFont.TestDirectory_SearchRange;
- begin
- AssertEquals('Failed on SearchRange', 256, Int(FI.Directory.SearchRange));
- end;
- procedure TTestLiberationFont.TestDirectory_EntrySelector;
- begin
- AssertEquals('Failed on EntrySelector', 4, Int(FI.Directory.EntrySelector));
- end;
- procedure TTestLiberationFont.TestDirectory_RangeShift;
- begin
- AssertEquals('Failed on RangeShift', 48, Int(FI.Directory.RangeShift));
- end;
- procedure TTestLiberationFont.TestHead_FileVersion;
- begin
- AssertEquals('Failed on 1', '00010000', IntToHex(FI.Head.FileVersion.Version, 8));
- AssertEquals('Failed on 2', 1, FI.Head.FileVersion.Major);
- AssertEquals('Failed on 3', 0, FI.Head.FileVersion.Minor);
- end;
- procedure TTestLiberationFont.TestHead_FontRevision;
- begin
- AssertEquals('Failed on 1', '00020000', IntToHex(FI.Head.FontRevision.Version, 8));
- AssertEquals('Failed on 2', 2, FI.Head.FontRevision.Major);
- AssertEquals('Failed on 3', 0, FI.Head.FontRevision.Minor);
- end;
- procedure TTestLiberationFont.TestHead_CheckSumAdjustment;
- begin
- AssertEquals('Failed on 1', $D6572D59, FI.Head.CheckSumAdjustment);
- end;
- procedure TTestLiberationFont.TestHead_MagicNumber;
- begin
- AssertEquals('Failed on 1', $5F0F3CF5, FI.Head.MagicNumber);
- end;
- procedure TTestLiberationFont.TestHead_Flags;
- begin
- AssertEquals('Failed on 1', $021F, FI.Head.Flags);
- end;
- procedure TTestLiberationFont.TestHead_UnitsPerEm;
- begin
- AssertEquals('Failed on 1', 2048, FI.Head.UnitsPerEm);
- end;
- procedure TTestLiberationFont.TestHead_Created;
- var
- dt: TDateTime;
- s: string;
- begin
- // LONGDATETIME: Date represented in number of seconds since 12:00 midnight,
- // January 1, 1904. The value is represented as a signed 64-bit integer.
- //dt := EncodeDateTime(1904, 1, 1, 0, 0, 0, 0);
- //s := FormatDateTime('yyyy-mm-dd hh:nn:ss', dt);
- //AssertEquals('Failed on 1', '1904-01-01 00:00:00', s);
- //dt := IncSecond(dt, FI.Head.Created);
- // The above code equates to using MacToDateTime()
- dt := MacToDateTime(FI.Head.Created);
- // We don't use this AssertEquals() because it shows a huge Double data-type
- // value as the result.
- //AssertEquals('Failed on 1', EncodeDateTime(2012, 10, 4, 20, 2, 31, 0), dt);
- // Instead we use this - which shows human readable dates.
- s := FormatDateTime('yyyy-mm-dd hh:nn:ss', dt);
- AssertEquals('Failed on 2', '2012-10-04 20:02:31', s);
- end;
- procedure TTestLiberationFont.TestHead_Modified;
- var
- dt: TDateTime;
- s: string;
- begin
- dt := MacToDateTime(FI.Head.Modified);
- s := FormatDateTime('yyyy-mm-dd hh:nn:ss', dt);
- AssertEquals('Failed on 2', '2012-10-04 20:02:31', s);
- end;
- procedure TTestLiberationFont.TestHead_BBox_xMin;
- begin
- AssertEquals('Failed on 1', -1114, FI.Head.BBox[0]);
- end;
- procedure TTestLiberationFont.TestHead_BBox_yMin;
- begin
- AssertEquals('Failed on 1', -621, FI.Head.BBox[1]);
- end;
- procedure TTestLiberationFont.TestHead_BBox_xMax;
- begin
- AssertEquals('Failed on 1', 2666, FI.Head.BBox[2]);
- end;
- procedure TTestLiberationFont.TestHead_BBox_yMax;
- begin
- AssertEquals('Failed on 1', 2007, FI.Head.BBox[3]);
- end;
- procedure TTestLiberationFont.TestHead_MacStyle;
- begin
- AssertEquals('Failed on 1', $0000, FI.Head.MacStyle);
- end;
- procedure TTestLiberationFont.TestHead_LowestRecPPEM;
- begin
- AssertEquals('Failed on 1', 8, FI.Head.LowestRecPPEM);
- end;
- procedure TTestLiberationFont.TestHead_FontDirectionHint;
- begin
- AssertEquals('Failed on 1', 0, FI.Head.FontDirectionHint);
- end;
- procedure TTestLiberationFont.TestHead_IndexToLocFormat;
- begin
- AssertEquals('Failed on 1', 1, FI.Head.IndexToLocFormat);
- end;
- procedure TTestLiberationFont.TestHead_glyphDataFormat;
- begin
- AssertEquals('Failed on 1', 0, FI.Head.glyphDataFormat);
- end;
- procedure TTestLiberationFont.TestHHead_TableVersion;
- begin
- AssertEquals('Failed on 1', '00010000', IntToHex(FI.HHead.TableVersion.Version, 8));
- AssertEquals('Failed on 2', 1, FI.HHead.TableVersion.Major);
- AssertEquals('Failed on 3', 0, FI.HHead.TableVersion.Minor);
- end;
- procedure TTestLiberationFont.TestHHead_Ascender;
- begin
- AssertEquals('Failed on 1', 1854, FI.HHead.Ascender);
- end;
- procedure TTestLiberationFont.TestHHead_Descender;
- begin
- AssertEquals('Failed on 1', -434, FI.HHead.Descender);
- end;
- procedure TTestLiberationFont.TestHHead_LineGap;
- begin
- AssertEquals('Failed on 1', 67, FI.HHead.LineGap);
- end;
- procedure TTestLiberationFont.TestHHead_AdvanceWidthMax;
- begin
- AssertEquals('Failed on 1', 2740, FI.HHead.AdvanceWidthMax);
- end;
- procedure TTestLiberationFont.TestHHead_MinLeftSideBearing;
- begin
- AssertEquals('Failed on 1', -1114, FI.HHead.MinLeftSideBearing);
- end;
- procedure TTestLiberationFont.TestHHead_MinRightSideBearing;
- begin
- AssertEquals('Failed on 1', -1414, FI.HHead.MinRightSideBearing);
- end;
- procedure TTestLiberationFont.TestHHead_XMaxExtent;
- begin
- AssertEquals('Failed on 1', 2666, FI.HHead.XMaxExtent);
- end;
- procedure TTestLiberationFont.TestHHead_CaretSlopeRise;
- begin
- AssertEquals('Failed on 1', 1, FI.HHead.CaretSlopeRise);
- end;
- procedure TTestLiberationFont.TestHHead_CaretSlopeRun;
- begin
- AssertEquals('Failed on 1', 0, FI.HHead.CaretSlopeRun);
- end;
- procedure TTestLiberationFont.TestHHead_Reserved;
- begin
- AssertEquals('Failed on 1', 0, FI.HHead.Reserved[0]);
- AssertEquals('Failed on 2', 0, FI.HHead.Reserved[1]);
- AssertEquals('Failed on 3', 0, FI.HHead.Reserved[2]);
- AssertEquals('Failed on 4', 0, FI.HHead.Reserved[3]);
- AssertEquals('Failed on 5', 0, FI.HHead.Reserved[4]);
- end;
- procedure TTestLiberationFont.TestHHead_metricDataFormat;
- begin
- AssertEquals('Failed on 1', 0, FI.HHead.metricDataFormat);
- end;
- procedure TTestLiberationFont.TestHHead_numberOfHMetrics;
- begin
- AssertEquals('Failed on 1', 2587, FI.HHead.numberOfHMetrics);
- end;
- procedure TTestLiberationFont.TestCMap_version;
- begin
- AssertEquals('Failed on 1', '0000', IntToHex(FI.CmapH.Version, 4));
- AssertEquals('Failed on 2', 0, FI.CmapH.Version);
- end;
- procedure TTestLiberationFont.TestCMap_SubTableCount;
- begin
- AssertEquals('Failed on 1', 3, FI.CmapH.SubTableCount);
- end;
- procedure TTestLiberationFont.TestCMapSubTables_1;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[0];
- AssertEquals('Failed on 1', 0, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 3, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '0000001C', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestLiberationFont.TestCMapSubTables_2;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[1];
- AssertEquals('Failed on 1', 1, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 0, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '00000424', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestLiberationFont.TestCMapSubTables_3;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[2];
- AssertEquals('Failed on 1', 3, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 1, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '0000001C', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestLiberationFont.TestCmapUnicodeMap_Format;
- begin
- AssertEquals('Failed on 1', 4, FI.CmapUnicodeMap.Format);
- end;
- procedure TTestLiberationFont.TestCmapUnicodeMap_Length;
- begin
- AssertEquals('Failed on 1', 1032, FI.CmapUnicodeMap.Length);
- end;
- procedure TTestLiberationFont.TestCmapUnicodeMap_SegmentCount2;
- begin
- AssertEquals('Failed on 1', 254, FI.CmapUnicodeMap.SegmentCount2);
- end;
- procedure TTestLiberationFont.TestCmapUnicodeMap_SearchRange;
- begin
- AssertEquals('Failed on 1', 128, FI.CmapUnicodeMap.SearchRange);
- end;
- procedure TTestLiberationFont.TestCmapUnicodeMap_EntrySelector;
- begin
- AssertEquals('Failed on 1', 6, FI.CmapUnicodeMap.EntrySelector);
- end;
- procedure TTestLiberationFont.TestCmapUnicodeMap_RangeShift;
- begin
- AssertEquals('Failed on 1', 126, FI.CmapUnicodeMap.RangeShift);
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_1_StartCode;
- begin
- AssertEquals('Failed on 1', '0020', IntToHex(FI.CmapUnicodeMapSegments[0].StartCode, 4));
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_1_EndCode;
- begin
- AssertEquals('Failed on 1', '007E', IntToHex(FI.CmapUnicodeMapSegments[0].EndCode, 4));
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_1_IDDelta;
- begin
- AssertEquals('Failed on 1', -29, FI.CmapUnicodeMapSegments[0].IDDelta);
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_1_IDRangeOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.CmapUnicodeMapSegments[0].IDRangeOffset);
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_2_StartCode;
- begin
- AssertEquals('Failed on 1', '00A0', IntToHex(FI.CmapUnicodeMapSegments[1].StartCode, 4));
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_2_EndCode;
- begin
- AssertEquals('Failed on 1', '036F', IntToHex(FI.CmapUnicodeMapSegments[1].EndCode, 4));
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_2_IDDelta;
- begin
- AssertEquals('Failed on 1', -62, FI.CmapUnicodeMapSegments[1].IDDelta);
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_2_IDRangeOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.CmapUnicodeMapSegments[1].IDRangeOffset);
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_127_StartCode;
- begin
- AssertEquals('Failed on 1', 'FFFF', IntToHex(FI.CmapUnicodeMapSegments[126].StartCode, 4));
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_127_EndCode;
- begin
- AssertEquals('Failed on 1', 'FFFF', IntToHex(FI.CmapUnicodeMapSegments[126].EndCode, 4));
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_127_IDDelta;
- begin
- AssertEquals('Failed on 1', 1, FI.CmapUnicodeMapSegments[126].IDDelta);
- end;
- procedure TTestLiberationFont.TestUnicodeMapSegment_127_IDRangeOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.CmapUnicodeMapSegments[126].IDRangeOffset);
- end;
- procedure TTestLiberationFont.TestWidths_Size;
- begin
- AssertEquals('Failed on 1', 2587, Length(FI.Widths));
- end;
- procedure TTestLiberationFont.TestWidths_HorMetric_0_AdvanceWidth;
- begin
- AssertEquals('Failed on 1', 1536, FI.Widths[0].AdvanceWidth);
- end;
- procedure TTestLiberationFont.TestWidths_HorMetric_0_LSB;
- begin
- AssertEquals('Failed on 1', 205, FI.Widths[0].LSB);
- end;
- procedure TTestLiberationFont.TestWidths_HorMetric_1_AdvanceWidth;
- begin
- AssertEquals('Failed on 1', 0, FI.Widths[1].AdvanceWidth);
- end;
- procedure TTestLiberationFont.TestWidths_HorMetric_1_LSB;
- begin
- AssertEquals('Failed on 1', 0, FI.Widths[1].LSB);
- end;
- procedure TTestLiberationFont.TestWidths_HorMetric_2586_AdvanceWidth;
- begin
- AssertEquals('Failed on 1', 1140, FI.Widths[2586].AdvanceWidth);
- end;
- procedure TTestLiberationFont.TestWidths_HorMetric_2586_LSB;
- begin
- AssertEquals('Failed on 1', 86, FI.Widths[2586].LSB);
- end;
- procedure TTestLiberationFont.TestMaxP_VersionNumber;
- begin
- AssertEquals('Failed on 1', '00010000', IntToHex(FI.MaxP.VersionNumber.Version, 8));
- AssertEquals('Failed on 2', 1, FI.MaxP.VersionNumber.Major);
- AssertEquals('Failed on 3', 0, FI.MaxP.VersionNumber.Minor);
- end;
- procedure TTestLiberationFont.TestMaxP_numGlyphs;
- begin
- AssertEquals('Failed on 1', 2587, FI.MaxP.numGlyphs);
- end;
- procedure TTestLiberationFont.TestMaxP_maxPoints;
- begin
- AssertEquals('Failed on 1', 338, FI.MaxP.maxPoints);
- end;
- procedure TTestLiberationFont.TestMaxP_maxContours;
- begin
- AssertEquals('Failed on 1', 84, FI.MaxP.maxContours);
- end;
- procedure TTestLiberationFont.TestMaxP_maxCompositePoints;
- begin
- AssertEquals('Failed on 1', 92, FI.MaxP.maxCompositePoints);
- end;
- procedure TTestLiberationFont.TestMaxP_maxCompositeContours;
- begin
- AssertEquals('Failed on 1', 6, FI.MaxP.maxCompositeContours);
- end;
- procedure TTestLiberationFont.TestMaxP_maxZones;
- begin
- AssertEquals('Failed on 1', 2, FI.MaxP.maxZones);
- end;
- procedure TTestLiberationFont.TestMaxP_maxTwilightPoints;
- begin
- AssertEquals('Failed on 1', 16, FI.MaxP.maxTwilightPoints);
- end;
- procedure TTestLiberationFont.TestMaxP_maxStorage;
- begin
- AssertEquals('Failed on 1', 47, FI.MaxP.maxStorage);
- end;
- procedure TTestLiberationFont.TestMaxP_maxFunctionDefs;
- begin
- AssertEquals('Failed on 1', 92, FI.MaxP.maxFunctionDefs);
- end;
- procedure TTestLiberationFont.TestMaxP_maxInstructionDefs;
- begin
- AssertEquals('Failed on 1', 0, FI.MaxP.maxInstructionDefs);
- end;
- procedure TTestLiberationFont.TestMaxP_maxStackElements;
- begin
- AssertEquals('Failed on 1', 676, FI.MaxP.maxStackElements);
- end;
- procedure TTestLiberationFont.TestMaxP_maxSizeOfInstructions;
- begin
- AssertEquals('Failed on 1', 516, FI.MaxP.maxSizeOfInstructions);
- end;
- procedure TTestLiberationFont.TestMaxP_maxComponentElements;
- begin
- AssertEquals('Failed on 1', 4, FI.MaxP.maxComponentElements);
- end;
- procedure TTestLiberationFont.TestMaxP_maxComponentDepth;
- begin
- AssertEquals('Failed on 1', 1, FI.MaxP.maxComponentDepth);
- end;
- procedure TTestLiberationFont.TestOS2Data_version;
- begin
- AssertEquals('Failed on 1', 3, FI.OS2Data.version);
- end;
- procedure TTestLiberationFont.TestOS2Data_xAvgCharWidth;
- begin
- AssertEquals('Failed on 1', 1186, FI.OS2Data.xAvgCharWidth);
- end;
- procedure TTestLiberationFont.TestOS2Data_usWeightClass;
- begin
- AssertEquals('Failed on 1', 400, FI.OS2Data.usWeightClass);
- end;
- procedure TTestLiberationFont.TestOS2Data_usWidthClass;
- begin
- AssertEquals('Failed on 1', 5, FI.OS2Data.usWidthClass);
- end;
- procedure TTestLiberationFont.TestOS2Data_fsType;
- begin
- AssertEquals('Failed on 1', '0000', IntToHex(FI.OS2Data.fsType, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_ySubscriptXSize;
- begin
- AssertEquals('Failed on 1', 1434, FI.OS2Data.ySubscriptXSize);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySubscriptYSize;
- begin
- AssertEquals('Failed on 1', 1331, FI.OS2Data.ySubscriptYSize);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySubscriptXOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.OS2Data.ySubscriptXOffset);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySubscriptYOffset;
- begin
- AssertEquals('Failed on 1', 283, FI.OS2Data.ySubscriptYOffset);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySuperscriptXSize;
- begin
- AssertEquals('Failed on 1', 1434, FI.OS2Data.ySuperscriptXSize);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySuperscriptYSize;
- begin
- AssertEquals('Failed on 1', 1331, FI.OS2Data.ySuperscriptYSize);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySuperscriptXOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.OS2Data.ySuperscriptXOffset);
- end;
- procedure TTestLiberationFont.TestOS2Data_ySuperscriptYOffset;
- begin
- AssertEquals('Failed on 1', 977, FI.OS2Data.ySuperscriptYOffset);
- end;
- procedure TTestLiberationFont.TestOS2Data_yStrikeoutSize;
- begin
- AssertEquals('Failed on 1', 102, FI.OS2Data.yStrikeoutSize);
- end;
- procedure TTestLiberationFont.TestOS2Data_yStrikeoutPosition;
- begin
- AssertEquals('Failed on 1', 530, FI.OS2Data.yStrikeoutPosition);
- end;
- procedure TTestLiberationFont.TestOS2Data_sFamilyClass;
- begin
- AssertEquals('Failed on 1', 5, Lo(FI.OS2Data.sFamilyClass));
- AssertEquals('Failed on 2', 8, Hi(FI.OS2Data.sFamilyClass));
- AssertEquals('Failed on 3', '0805', IntToHex(FI.OS2Data.sFamilyClass, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_Panose;
- begin
- AssertEquals('Failed on 1', 2, FI.OS2Data.panose[0]);
- AssertEquals('Failed on 2', 11, FI.OS2Data.panose[1]);
- AssertEquals('Failed on 3', 6, FI.OS2Data.panose[2]);
- AssertEquals('Failed on 4', 4, FI.OS2Data.panose[3]);
- AssertEquals('Failed on 5', 2, FI.OS2Data.panose[4]);
- AssertEquals('Failed on 6', 2, FI.OS2Data.panose[5]);
- AssertEquals('Failed on 7', 2, FI.OS2Data.panose[6]);
- AssertEquals('Failed on 8', 2, FI.OS2Data.panose[7]);
- AssertEquals('Failed on 9', 2, FI.OS2Data.panose[8]);
- AssertEquals('Failed on 10', 4, FI.OS2Data.panose[9]);
- end;
- procedure TTestLiberationFont.TestOS2Data_ulUnicodeRange1;
- begin
- AssertEquals('Failed on 1', '1110 0000 0000 0000 0000 1010 1111 1111', IntToBin(FI.OS2Data.ulUnicodeRange1, 32, 4));
- AssertEquals('Failed on 2', 'E0000AFF', IntToHex(FI.OS2Data.ulUnicodeRange1, 8));
- end;
- procedure TTestLiberationFont.TestOS2Data_ulUnicodeRange2;
- begin
- AssertEquals('Failed on 1', '0101 0000 0000 0000 0111 1000 1111 1111', IntToBin(FI.OS2Data.ulUnicodeRange2, 32, 4));
- AssertEquals('Failed on 2', '500078FF', IntToHex(FI.OS2Data.ulUnicodeRange2, 8));
- end;
- procedure TTestLiberationFont.TestOS2Data_ulUnicodeRange3;
- begin
- AssertEquals('Failed on 1', '0000 0000 0000 0000 0000 0000 0010 0001', IntToBin(FI.OS2Data.ulUnicodeRange3, 32, 4));
- AssertEquals('Failed on 2', '00000021', IntToHex(FI.OS2Data.ulUnicodeRange3, 8));
- end;
- procedure TTestLiberationFont.TestOS2Data_ulUnicodeRange4;
- begin
- AssertEquals('Failed on 1', '0000 0000 0000 0000 0000 0000 0000 0000', IntToBin(FI.OS2Data.ulUnicodeRange4, 32, 4));
- AssertEquals('Failed on 2', '00000000', IntToHex(FI.OS2Data.ulUnicodeRange4, 8));
- end;
- procedure TTestLiberationFont.TestOS2Data_achVendID;
- var
- s: string;
- begin
- s := FI.OS2Data.achVendID[0] + FI.OS2Data.achVendID[1] + FI.OS2Data.achVendID[2] +
- FI.OS2Data.achVendID[3];
- AssertEquals('Failed on 1', '1ASC', s);
- end;
- procedure TTestLiberationFont.TestOS2Data_fsSelection;
- begin
- AssertEquals('Failed on 1', '0040', IntToHex(FI.OS2Data.fsSelection, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_usFirstCharIndex;
- begin
- AssertEquals('Failed on 1', '0020', IntToHex(FI.OS2Data.usFirstCharIndex, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_usLastCharIndex;
- begin
- AssertEquals('Failed on 1', 'FFFC', IntToHex(FI.OS2Data.usLastCharIndex, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_sTypoAscender;
- begin
- AssertEquals('Failed on 1', 1491, FI.OS2Data.sTypoAscender);
- end;
- procedure TTestLiberationFont.TestOS2Data_sTypoDescender;
- begin
- AssertEquals('Failed on 1', -431, FI.OS2Data.sTypoDescender);
- end;
- procedure TTestLiberationFont.TestOS2Data_sTypoLineGap;
- begin
- AssertEquals('Failed on 1', 307, FI.OS2Data.sTypoLineGap);
- end;
- procedure TTestLiberationFont.TestOS2Data_usWinAscent;
- begin
- AssertEquals('Failed on 1', 1854, FI.OS2Data.usWinAscent);
- end;
- procedure TTestLiberationFont.TestOS2Data_usWinDescent;
- begin
- AssertEquals('Failed on 1', 434, FI.OS2Data.usWinDescent);
- end;
- procedure TTestLiberationFont.TestOS2Data_ulCodePageRange1;
- begin
- AssertEquals('Failed on 1', '600001BF', IntToHex(FI.OS2Data.ulCodePageRange1, 8));
- end;
- procedure TTestLiberationFont.TestOS2Data_ulCodePageRange2;
- begin
- AssertEquals('Failed on 1', 'DFF70000', IntToHex(FI.OS2Data.ulCodePageRange2, 8));
- end;
- procedure TTestLiberationFont.TestOS2Data_sxHeight;
- begin
- AssertEquals('Failed on 1', 1082, FI.OS2Data.sxHeight);
- end;
- procedure TTestLiberationFont.TestOS2Data_sCapHeight;
- begin
- AssertEquals('Failed on 1', 1409, FI.OS2Data.sCapHeight);
- end;
- procedure TTestLiberationFont.TestOS2Data_usDefaultChar;
- begin
- AssertEquals('Failed on 1', '0000', IntToHex(FI.OS2Data.usDefaultChar, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_usBreakChar;
- begin
- AssertEquals('Failed on 1', '0020', IntToHex(FI.OS2Data.usBreakChar, 4));
- end;
- procedure TTestLiberationFont.TestOS2Data_usMaxContext;
- begin
- AssertEquals('Failed on 1', 14, FI.OS2Data.usMaxContext);
- end;
- procedure TTestLiberationFont.TestPostScript_Format;
- begin
- AssertEquals('Failed on 1', '00020000', IntToHex(FI.PostScript.Format.Version, 8));
- AssertEquals('Failed on 2', 2, FI.PostScript.Format.Major);
- AssertEquals('Failed on 3', 0, FI.PostScript.Format.Minor);
- end;
- procedure TTestLiberationFont.TestPostScript_ItalicAngle;
- begin
- AssertEquals('Failed on 1', 0.0, FI.PostScript.ItalicAngle);
- end;
- procedure TTestLiberationFont.TestPostScript_UnderlinePosition;
- begin
- AssertEquals('Failed on 1', -217, FI.PostScript.UnderlinePosition);
- end;
- procedure TTestLiberationFont.TestPostScript_underlineThickness;
- begin
- AssertEquals('Failed on 1', 150, FI.PostScript.underlineThickness);
- end;
- procedure TTestLiberationFont.TestPostScript_isFixedPitch;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.isFixedPitch);
- end;
- procedure TTestLiberationFont.TestPostScript_minMemType42;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.minMemType42);
- end;
- procedure TTestLiberationFont.TestPostScript_maxMemType42;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.maxMemType42);
- end;
- procedure TTestLiberationFont.TestPostScript_minMemType1;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.minMemType1);
- end;
- procedure TTestLiberationFont.TestPostScript_maxMemType1;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.maxMemType1);
- end;
- procedure TTestLiberationFont.TestGetGlyphIndex;
- begin
- AssertEquals('Failed on 1.1', 67, Ord('C'));
- AssertEquals('Failed on 1.2', 111, Ord('o'));
- AssertEquals('Failed on 2.1', 38, FI.GetGlyphIndex(Ord('C')));
- AssertEquals('Failed on 2.2', 82, FI.GetGlyphIndex(Ord('o')));
- AssertEquals('Failed on 2.3', 88, FI.GetGlyphIndex(Ord('u')));
- AssertEquals('Failed on 2.4', 87, FI.GetGlyphIndex(Ord('t')));
- AssertEquals('Failed on 2.5', 85, FI.GetGlyphIndex(Ord('r')));
- AssertEquals('Failed on 2.6', 92, FI.GetGlyphIndex(Ord('y')));
- AssertEquals('Failed on 2.7', 3, FI.GetGlyphIndex(Ord(' ')));
- AssertEquals('Failed on 2.8', 51, FI.GetGlyphIndex(Ord('P')));
- AssertEquals('Failed on 2.9', 80, FI.GetGlyphIndex(Ord('m')));
- AssertEquals('Failed on 2.10', 79, FI.GetGlyphIndex(Ord('l')));
- AssertEquals('Failed on 2.11', 19, FI.GetGlyphIndex(Ord('0')));
- AssertEquals('Failed on 2.12', 20, FI.GetGlyphIndex(Ord('1')));
- end;
- procedure TTestLiberationFont.TestGetAdvanceWidth;
- begin
- AssertEquals('Failed on 1', 1479, FI.GetAdvanceWidth(38)); // 'C'
- AssertEquals('Failed on 2', 1139, FI.GetAdvanceWidth(82)); // 'o'
- AssertEquals('Failed on 3', 1139, FI.GetAdvanceWidth(88)); // 'u'
- AssertEquals('Failed on 4', 569, FI.GetAdvanceWidth(87)); // 't'
- AssertEquals('Failed on 5', 682, FI.GetAdvanceWidth(85)); // 'r'
- AssertEquals('Failed on 6', 1024, FI.GetAdvanceWidth(92)); // 'y'
- AssertEquals('Failed on 7', 569, FI.GetAdvanceWidth(3)); // ' '
- AssertEquals('Failed on 8', 1366, FI.GetAdvanceWidth(51)); // 'P'
- AssertEquals('Failed on 9', 1706, FI.GetAdvanceWidth(80)); // 'm'
- AssertEquals('Failed on 10', 455, FI.GetAdvanceWidth(79)); // 'l'
- AssertEquals('Failed on 11', 1139, FI.GetAdvanceWidth(19)); // '0'
- AssertEquals('Failed on 12', 1139, FI.GetAdvanceWidth(20)); // '1'
- end;
- { TTestFreeSansFont }
- procedure TTestFreeSansFont.SetUp;
- begin
- inherited SetUp;
- AssertTrue('Failed to find TTF font file <' + cFont2 + '>' + LineEnding +
- 'You can download it from [http://ftp.gnu.org/gnu/freefont/freefont-ttf-20140503.zip]',
- FileExists(cFont2) = True);
- LoadFont(cFont2);
- end;
- procedure TTestFreeSansFont.TestDirectory_FontVersion;
- begin
- AssertEquals('Failed on 0', '00010000', IntToHex(FI.Directory.FontVersion.Version, 8));
- AssertEquals('Failed on Major Version', 1, FI.Directory.FontVersion.Major);
- AssertEquals('Failed on Minor Version', 0, FI.Directory.FontVersion.Minor);
- end;
- procedure TTestFreeSansFont.TestDirectory_NumTables;
- begin
- AssertEquals('Failed on Numtables', 19, Int(FI.Directory.Numtables));
- end;
- procedure TTestFreeSansFont.TestDirectory_SearchRange;
- begin
- AssertEquals('Failed on SearchRange', 256, Int(FI.Directory.SearchRange));
- end;
- procedure TTestFreeSansFont.TestDirectory_EntrySelector;
- begin
- AssertEquals('Failed on EntrySelector', 4, Int(FI.Directory.EntrySelector));
- end;
- procedure TTestFreeSansFont.TestDirectory_RangeShift;
- begin
- AssertEquals('Failed on RangeShift', 48, Int(FI.Directory.RangeShift));
- end;
- procedure TTestFreeSansFont.TestHead_FileVersion;
- begin
- AssertEquals('Failed on 1', '00010000', IntToHex(FI.Head.FileVersion.Version, 8));
- AssertEquals('Failed on 2', 1, FI.Head.FileVersion.Major);
- AssertEquals('Failed on 3', 0, FI.Head.FileVersion.Minor);
- end;
- procedure TTestFreeSansFont.TestHead_FontRevision;
- begin
- { graemeg (2015-09-11): Microsoft's ttfdump tools says the version of this
- font is 412.2 and Linux's FontForge says it is 412.2268. I'm making the
- assumption that Microsoft's tool simply truncated the version number to
- one decimal. }
- AssertEquals('Failed on 1', 412, FI.Head.FontRevision.Major);
- AssertEquals('Failed on 2', 2268, FI.Head.FontRevision.Minor);
- end;
- procedure TTestFreeSansFont.TestHead_CheckSumAdjustment;
- begin
- AssertEquals('Failed on 1', $BDD896C1, FI.Head.CheckSumAdjustment);
- end;
- procedure TTestFreeSansFont.TestHead_MagicNumber;
- begin
- AssertEquals('Failed on 1', $5F0F3CF5, FI.Head.MagicNumber);
- end;
- procedure TTestFreeSansFont.TestHead_Flags;
- begin
- AssertEquals('Failed on 1', $021F, FI.Head.Flags);
- end;
- procedure TTestFreeSansFont.TestHead_UnitsPerEm;
- begin
- AssertEquals('Failed on 1', 1000, FI.Head.UnitsPerEm);
- end;
- procedure TTestFreeSansFont.TestHead_Created;
- var
- dt: TDateTime;
- s: string;
- begin
- // LONGDATETIME: Date represented in number of seconds since 12:00 midnight,
- // January 1, 1904. The value is represented as a signed 64-bit integer.
- //dt := EncodeDateTime(1904, 1, 1, 0, 0, 0, 0);
- //s := FormatDateTime('yyyy-mm-dd hh:nn:ss', dt);
- //AssertEquals('Failed on 1', '1904-01-01 00:00:00', s);
- //dt := IncSecond(dt, FI.Head.Created);
- // The above code equates to using MacToDateTime()
- dt := MacToDateTime(FI.Head.Created);
- // We don't use this AssertEquals() because it shows a huge Double data-type
- // value as the result.
- //AssertEquals('Failed on 1', EncodeDateTime(2012, 10, 4, 20, 2, 31, 0), dt);
- // Instead we use this - which shows human readable dates.
- s := FormatDateTime('yyyy-mm-dd hh:nn:ss', dt);
- AssertEquals('Failed on 2', '2012-05-02 22:34:25', s);
- end;
- procedure TTestFreeSansFont.TestHead_Modified;
- var
- dt: TDateTime;
- s: string;
- begin
- dt := MacToDateTime(FI.Head.Modified);
- s := FormatDateTime('yyyy-mm-dd hh:nn:ss', dt);
- AssertEquals('Failed on 2', '2012-05-02 22:34:25', s);
- end;
- procedure TTestFreeSansFont.TestHead_BBox_xMin;
- begin
- AssertEquals('Failed on 1', -1166, FI.Head.BBox[0]);
- end;
- procedure TTestFreeSansFont.TestHead_BBox_yMin;
- begin
- AssertEquals('Failed on 1', -638, FI.Head.BBox[1]);
- end;
- procedure TTestFreeSansFont.TestHead_BBox_xMax;
- begin
- AssertEquals('Failed on 1', 2260, FI.Head.BBox[2]);
- end;
- procedure TTestFreeSansFont.TestHead_BBox_yMax;
- begin
- AssertEquals('Failed on 1', 1050, FI.Head.BBox[3]);
- end;
- procedure TTestFreeSansFont.TestHead_MacStyle;
- begin
- AssertEquals('Failed on 1', $0000, FI.Head.MacStyle);
- end;
- procedure TTestFreeSansFont.TestHead_LowestRecPPEM;
- begin
- AssertEquals('Failed on 1', 8, FI.Head.LowestRecPPEM);
- end;
- procedure TTestFreeSansFont.TestHead_FontDirectionHint;
- begin
- AssertEquals('Failed on 1', 0, FI.Head.FontDirectionHint);
- end;
- procedure TTestFreeSansFont.TestHead_IndexToLocFormat;
- begin
- AssertEquals('Failed on 1', 1, FI.Head.IndexToLocFormat);
- end;
- procedure TTestFreeSansFont.TestHead_glyphDataFormat;
- begin
- AssertEquals('Failed on 1', 0, FI.Head.glyphDataFormat);
- end;
- procedure TTestFreeSansFont.TestHHead_TableVersion;
- begin
- AssertEquals('Failed on 1', '00010000', IntToHex(FI.HHead.TableVersion.Version, 8));
- AssertEquals('Failed on 2', 1, FI.HHead.TableVersion.Major);
- AssertEquals('Failed on 3', 0, FI.HHead.TableVersion.Minor);
- end;
- procedure TTestFreeSansFont.TestHHead_Ascender;
- begin
- AssertEquals('Failed on 1', 900, FI.HHead.Ascender);
- end;
- procedure TTestFreeSansFont.TestHHead_Descender;
- begin
- AssertEquals('Failed on 1', -200, FI.HHead.Descender);
- end;
- procedure TTestFreeSansFont.TestHHead_LineGap;
- begin
- AssertEquals('Failed on 1', 100, FI.HHead.LineGap);
- end;
- procedure TTestFreeSansFont.TestHHead_AdvanceWidthMax;
- begin
- AssertEquals('Failed on 1', 2256, FI.HHead.AdvanceWidthMax);
- end;
- procedure TTestFreeSansFont.TestHHead_MinLeftSideBearing;
- begin
- AssertEquals('Failed on 1', -1166, FI.HHead.MinLeftSideBearing);
- end;
- procedure TTestFreeSansFont.TestHHead_MinRightSideBearing;
- begin
- AssertEquals('Failed on 1', -724, FI.HHead.MinRightSideBearing);
- end;
- procedure TTestFreeSansFont.TestHHead_XMaxExtent;
- begin
- AssertEquals('Failed on 1', 2260, FI.HHead.XMaxExtent);
- end;
- procedure TTestFreeSansFont.TestHHead_CaretSlopeRise;
- begin
- AssertEquals('Failed on 1', 1, FI.HHead.CaretSlopeRise);
- end;
- procedure TTestFreeSansFont.TestHHead_CaretSlopeRun;
- begin
- AssertEquals('Failed on 1', 0, FI.HHead.CaretSlopeRun);
- end;
- procedure TTestFreeSansFont.TestHHead_Reserved;
- begin
- AssertEquals('Failed on 1', 0, FI.HHead.Reserved[0]);
- AssertEquals('Failed on 2', 0, FI.HHead.Reserved[1]);
- AssertEquals('Failed on 3', 0, FI.HHead.Reserved[2]);
- AssertEquals('Failed on 4', 0, FI.HHead.Reserved[3]);
- AssertEquals('Failed on 5', 0, FI.HHead.Reserved[4]);
- end;
- procedure TTestFreeSansFont.TestHHead_metricDataFormat;
- begin
- AssertEquals('Failed on 1', 0, FI.HHead.metricDataFormat);
- end;
- procedure TTestFreeSansFont.TestHHead_numberOfHMetrics;
- begin
- AssertEquals('Failed on 1', 6272, FI.HHead.numberOfHMetrics);
- end;
- procedure TTestFreeSansFont.TestCMap_version;
- begin
- AssertEquals('Failed on 1', '0000', IntToHex(FI.CmapH.Version, 4));
- AssertEquals('Failed on 2', 0, FI.CmapH.Version);
- end;
- procedure TTestFreeSansFont.TestCMap_SubTableCount;
- begin
- AssertEquals('Failed on 1', 5, FI.CmapH.SubTableCount);
- end;
- procedure TTestFreeSansFont.TestCMapSubTables_1;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[0];
- AssertEquals('Failed on 1', 0, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 3, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '0000002C', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestFreeSansFont.TestCMapSubTables_2;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[1];
- AssertEquals('Failed on 1', 0, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 10, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '00000644', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestFreeSansFont.TestCMapSubTables_3;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[2];
- AssertEquals('Failed on 1', 1, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 0, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '00000FA8', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestFreeSansFont.TestCMapSubTables_4;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[3];
- AssertEquals('Failed on 1', 3, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 1, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '0000002C', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestFreeSansFont.TestCMapSubTables_5;
- var
- lSubTable: TCmapSubTableEntry;
- begin
- lSubTable := FI.CmapSubtables[4];
- AssertEquals('Failed on 1', 3, lSubTable.PlatformID);
- AssertEquals('Failed on 2', 10, lSubTable.EncodingID);
- AssertEquals('Failed on 3', '00000644', IntToHex(lSubTable.Offset, 8));
- end;
- procedure TTestFreeSansFont.TestCmapUnicodeMap_Format;
- begin
- AssertEquals('Failed on 1', 4, FI.CmapUnicodeMap.Format);
- end;
- procedure TTestFreeSansFont.TestCmapUnicodeMap_Length;
- begin
- AssertEquals('Failed on 1', 1560, FI.CmapUnicodeMap.Length);
- end;
- procedure TTestFreeSansFont.TestCmapUnicodeMap_SegmentCount2;
- begin
- AssertEquals('Failed on 1', 386, FI.CmapUnicodeMap.SegmentCount2);
- end;
- procedure TTestFreeSansFont.TestCmapUnicodeMap_SearchRange;
- begin
- AssertEquals('Failed on 1', 256, FI.CmapUnicodeMap.SearchRange);
- end;
- procedure TTestFreeSansFont.TestCmapUnicodeMap_EntrySelector;
- begin
- AssertEquals('Failed on 1', 7, FI.CmapUnicodeMap.EntrySelector);
- end;
- procedure TTestFreeSansFont.TestCmapUnicodeMap_RangeShift;
- begin
- AssertEquals('Failed on 1', 130, FI.CmapUnicodeMap.RangeShift);
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_1_StartCode;
- begin
- AssertEquals('Failed on 1', '0020', IntToHex(FI.CmapUnicodeMapSegments[0].StartCode, 4));
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_1_EndCode;
- begin
- AssertEquals('Failed on 1', '007E', IntToHex(FI.CmapUnicodeMapSegments[0].EndCode, 4));
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_1_IDDelta;
- begin
- AssertEquals('Failed on 1', -29, FI.CmapUnicodeMapSegments[0].IDDelta);
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_1_IDRangeOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.CmapUnicodeMapSegments[0].IDRangeOffset);
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_2_StartCode;
- begin
- AssertEquals('Failed on 1', '00A0', IntToHex(FI.CmapUnicodeMapSegments[1].StartCode, 4));
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_2_EndCode;
- begin
- AssertEquals('Failed on 1', '01BB', IntToHex(FI.CmapUnicodeMapSegments[1].EndCode, 4));
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_2_IDDelta;
- begin
- AssertEquals('Failed on 1', -62, FI.CmapUnicodeMapSegments[1].IDDelta);
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_2_IDRangeOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.CmapUnicodeMapSegments[1].IDRangeOffset);
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_127_StartCode;
- begin
- AssertEquals('Failed on 1', '2190', IntToHex(FI.CmapUnicodeMapSegments[126].StartCode, 4));
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_127_EndCode;
- begin
- AssertEquals('Failed on 1', '2199', IntToHex(FI.CmapUnicodeMapSegments[126].EndCode, 4));
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_127_IDDelta;
- begin
- AssertEquals('Failed on 1', -5123, FI.CmapUnicodeMapSegments[126].IDDelta);
- end;
- procedure TTestFreeSansFont.TestUnicodeMapSegment_127_IDRangeOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.CmapUnicodeMapSegments[126].IDRangeOffset);
- end;
- procedure TTestFreeSansFont.TestWidths_Size;
- begin
- AssertEquals('Failed on 1', 6272, Length(FI.Widths));
- end;
- procedure TTestFreeSansFont.TestWidths_HorMetric_0_AdvanceWidth;
- begin
- AssertEquals('Failed on 1', 800, FI.Widths[0].AdvanceWidth);
- end;
- procedure TTestFreeSansFont.TestWidths_HorMetric_0_LSB;
- begin
- AssertEquals('Failed on 1', 35, FI.Widths[0].LSB);
- end;
- procedure TTestFreeSansFont.TestWidths_HorMetric_1_AdvanceWidth;
- begin
- AssertEquals('Failed on 1', 0, FI.Widths[1].AdvanceWidth);
- end;
- procedure TTestFreeSansFont.TestWidths_HorMetric_1_LSB;
- begin
- AssertEquals('Failed on 1', 0, FI.Widths[1].LSB);
- end;
- procedure TTestFreeSansFont.TestWidths_HorMetric_2586_AdvanceWidth;
- begin
- AssertEquals('Failed on 1', 516, FI.Widths[2586].AdvanceWidth);
- end;
- procedure TTestFreeSansFont.TestWidths_HorMetric_2586_LSB;
- begin
- AssertEquals('Failed on 1', 50, FI.Widths[2586].LSB);
- end;
- procedure TTestFreeSansFont.TestMaxP_VersionNumber;
- begin
- AssertEquals('Failed on 1', '00010000', IntToHex(FI.MaxP.VersionNumber.Version, 8));
- AssertEquals('Failed on 2', 1, FI.MaxP.VersionNumber.Major);
- AssertEquals('Failed on 3', 0, FI.MaxP.VersionNumber.Minor);
- end;
- procedure TTestFreeSansFont.TestMaxP_numGlyphs;
- begin
- AssertEquals('Failed on 1', 6272, FI.MaxP.numGlyphs);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxPoints;
- begin
- AssertEquals('Failed on 1', 439, FI.MaxP.maxPoints);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxContours;
- begin
- AssertEquals('Failed on 1', 100, FI.MaxP.maxContours);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxCompositePoints;
- begin
- AssertEquals('Failed on 1', 117, FI.MaxP.maxCompositePoints);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxCompositeContours;
- begin
- AssertEquals('Failed on 1', 8, FI.MaxP.maxCompositeContours);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxZones;
- begin
- AssertEquals('Failed on 1', 2, FI.MaxP.maxZones);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxTwilightPoints;
- begin
- AssertEquals('Failed on 1', 1, FI.MaxP.maxTwilightPoints);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxStorage;
- begin
- AssertEquals('Failed on 1', 2, FI.MaxP.maxStorage);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxFunctionDefs;
- begin
- AssertEquals('Failed on 1', 22, FI.MaxP.maxFunctionDefs);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxInstructionDefs;
- begin
- AssertEquals('Failed on 1', 0, FI.MaxP.maxInstructionDefs);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxStackElements;
- begin
- AssertEquals('Failed on 1', 256, FI.MaxP.maxStackElements);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxSizeOfInstructions;
- begin
- AssertEquals('Failed on 1', 1424, FI.MaxP.maxSizeOfInstructions);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxComponentElements;
- begin
- AssertEquals('Failed on 1', 8, FI.MaxP.maxComponentElements);
- end;
- procedure TTestFreeSansFont.TestMaxP_maxComponentDepth;
- begin
- AssertEquals('Failed on 1', 4, FI.MaxP.maxComponentDepth);
- end;
- procedure TTestFreeSansFont.TestOS2Data_version;
- begin
- AssertEquals('Failed on 1', 3, FI.OS2Data.version);
- end;
- procedure TTestFreeSansFont.TestOS2Data_xAvgCharWidth;
- begin
- AssertEquals('Failed on 1', 657, FI.OS2Data.xAvgCharWidth);
- end;
- procedure TTestFreeSansFont.TestOS2Data_usWeightClass;
- begin
- AssertEquals('Failed on 1', 400, FI.OS2Data.usWeightClass);
- end;
- procedure TTestFreeSansFont.TestOS2Data_usWidthClass;
- begin
- AssertEquals('Failed on 1', 5, FI.OS2Data.usWidthClass);
- end;
- procedure TTestFreeSansFont.TestOS2Data_fsType;
- begin
- AssertEquals('Failed on 1', '0000', IntToHex(FI.OS2Data.fsType, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySubscriptXSize;
- begin
- AssertEquals('Failed on 1', 650, FI.OS2Data.ySubscriptXSize);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySubscriptYSize;
- begin
- AssertEquals('Failed on 1', 666, FI.OS2Data.ySubscriptYSize);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySubscriptXOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.OS2Data.ySubscriptXOffset);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySubscriptYOffset;
- begin
- AssertEquals('Failed on 1', 200, FI.OS2Data.ySubscriptYOffset);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySuperscriptXSize;
- begin
- AssertEquals('Failed on 1', 650, FI.OS2Data.ySuperscriptXSize);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySuperscriptYSize;
- begin
- AssertEquals('Failed on 1', 666, FI.OS2Data.ySuperscriptYSize);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySuperscriptXOffset;
- begin
- AssertEquals('Failed on 1', 0, FI.OS2Data.ySuperscriptXOffset);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ySuperscriptYOffset;
- begin
- AssertEquals('Failed on 1', 390, FI.OS2Data.ySuperscriptYOffset);
- end;
- procedure TTestFreeSansFont.TestOS2Data_yStrikeoutSize;
- begin
- AssertEquals('Failed on 1', 49, FI.OS2Data.yStrikeoutSize);
- end;
- procedure TTestFreeSansFont.TestOS2Data_yStrikeoutPosition;
- begin
- AssertEquals('Failed on 1', 258, FI.OS2Data.yStrikeoutPosition);
- end;
- procedure TTestFreeSansFont.TestOS2Data_sFamilyClass;
- begin
- AssertEquals('Failed on 1', 8, Hi(FI.OS2Data.sFamilyClass));
- AssertEquals('Failed on 2', 5, Lo(FI.OS2Data.sFamilyClass));
- AssertEquals('Failed on 3', '0805', IntToHex(FI.OS2Data.sFamilyClass, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_Panose;
- begin
- AssertEquals('Failed on 1', 2, FI.OS2Data.panose[0]);
- AssertEquals('Failed on 2', 11, FI.OS2Data.panose[1]);
- AssertEquals('Failed on 3', 5, FI.OS2Data.panose[2]);
- AssertEquals('Failed on 4', 4, FI.OS2Data.panose[3]);
- AssertEquals('Failed on 5', 2, FI.OS2Data.panose[4]);
- AssertEquals('Failed on 6', 2, FI.OS2Data.panose[5]);
- AssertEquals('Failed on 7', 2, FI.OS2Data.panose[6]);
- AssertEquals('Failed on 8', 2, FI.OS2Data.panose[7]);
- AssertEquals('Failed on 9', 2, FI.OS2Data.panose[8]);
- AssertEquals('Failed on 10', 4, FI.OS2Data.panose[9]);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ulUnicodeRange1;
- begin
- AssertEquals('Failed on 1', 'E4839EFF', IntToHex(FI.OS2Data.ulUnicodeRange1, 8));
- end;
- procedure TTestFreeSansFont.TestOS2Data_ulUnicodeRange2;
- begin
- AssertEquals('Failed on 1', '4600FDFF', IntToHex(FI.OS2Data.ulUnicodeRange2, 8));
- end;
- procedure TTestFreeSansFont.TestOS2Data_ulUnicodeRange3;
- begin
- AssertEquals('Failed on 1', '000030A0', IntToHex(FI.OS2Data.ulUnicodeRange3, 8));
- end;
- procedure TTestFreeSansFont.TestOS2Data_ulUnicodeRange4;
- begin
- AssertEquals('Failed on 1', '00000584', IntToHex(FI.OS2Data.ulUnicodeRange4, 8));
- end;
- procedure TTestFreeSansFont.TestOS2Data_achVendID;
- var
- s: string;
- begin
- s := FI.OS2Data.achVendID[0] + FI.OS2Data.achVendID[1] + FI.OS2Data.achVendID[2] +
- FI.OS2Data.achVendID[3];
- AssertEquals('Failed on 1', 'GNU ', s);
- end;
- procedure TTestFreeSansFont.TestOS2Data_fsSelection;
- begin
- AssertEquals('Failed on 1', '0040', IntToHex(FI.OS2Data.fsSelection, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_usFirstCharIndex;
- begin
- AssertEquals('Failed on 1', '0020', IntToHex(FI.OS2Data.usFirstCharIndex, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_usLastCharIndex;
- begin
- AssertEquals('Failed on 1', 'FFFF', IntToHex(FI.OS2Data.usLastCharIndex, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_sTypoAscender;
- begin
- AssertEquals('Failed on 1', 800, FI.OS2Data.sTypoAscender);
- end;
- procedure TTestFreeSansFont.TestOS2Data_sTypoDescender;
- begin
- AssertEquals('Failed on 1', -200, FI.OS2Data.sTypoDescender);
- end;
- procedure TTestFreeSansFont.TestOS2Data_sTypoLineGap;
- begin
- AssertEquals('Failed on 1', 100, FI.OS2Data.sTypoLineGap);
- end;
- procedure TTestFreeSansFont.TestOS2Data_usWinAscent;
- begin
- AssertEquals('Failed on 1', 900, FI.OS2Data.usWinAscent);
- end;
- procedure TTestFreeSansFont.TestOS2Data_usWinDescent;
- begin
- AssertEquals('Failed on 1', 300, FI.OS2Data.usWinDescent);
- end;
- procedure TTestFreeSansFont.TestOS2Data_ulCodePageRange1;
- begin
- AssertEquals('Failed on 1', '600001BF', IntToHex(FI.OS2Data.ulCodePageRange1, 8));
- end;
- procedure TTestFreeSansFont.TestOS2Data_ulCodePageRange2;
- begin
- AssertEquals('Failed on 1', 'DFF70000', IntToHex(FI.OS2Data.ulCodePageRange2, 8));
- end;
- procedure TTestFreeSansFont.TestOS2Data_sxHeight;
- begin
- AssertEquals('Failed on 1', 524, FI.OS2Data.sxHeight);
- end;
- procedure TTestFreeSansFont.TestOS2Data_sCapHeight;
- begin
- AssertEquals('Failed on 1', 729, FI.OS2Data.sCapHeight);
- end;
- procedure TTestFreeSansFont.TestOS2Data_usDefaultChar;
- begin
- AssertEquals('Failed on 1', '0000', IntToHex(FI.OS2Data.usDefaultChar, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_usBreakChar;
- begin
- AssertEquals('Failed on 1', '0020', IntToHex(FI.OS2Data.usBreakChar, 4));
- end;
- procedure TTestFreeSansFont.TestOS2Data_usMaxContext;
- begin
- AssertEquals('Failed on 1', 10, FI.OS2Data.usMaxContext);
- end;
- procedure TTestFreeSansFont.TestPostScript_Format;
- begin
- AssertEquals('Failed on 1', '00020000', IntToHex(FI.PostScript.Format.Version, 8));
- AssertEquals('Failed on 2', 2, FI.PostScript.Format.Major);
- AssertEquals('Failed on 3', 0, FI.PostScript.Format.Minor);
- end;
- procedure TTestFreeSansFont.TestPostScript_ItalicAngle;
- begin
- AssertEquals('Failed on 1', 0.0, FI.PostScript.ItalicAngle);
- end;
- procedure TTestFreeSansFont.TestPostScript_UnderlinePosition;
- begin
- AssertEquals('Failed on 1', -176, FI.PostScript.UnderlinePosition);
- end;
- procedure TTestFreeSansFont.TestPostScript_underlineThickness;
- begin
- AssertEquals('Failed on 1', 50, FI.PostScript.underlineThickness);
- end;
- procedure TTestFreeSansFont.TestPostScript_isFixedPitch;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.isFixedPitch);
- end;
- procedure TTestFreeSansFont.TestPostScript_minMemType42;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.minMemType42);
- end;
- procedure TTestFreeSansFont.TestPostScript_maxMemType42;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.maxMemType42);
- end;
- procedure TTestFreeSansFont.TestPostScript_minMemType1;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.minMemType1);
- end;
- procedure TTestFreeSansFont.TestPostScript_maxMemType1;
- begin
- AssertEquals('Failed on 1', 0, FI.PostScript.maxMemType1);
- end;
- initialization
- RegisterTest({$ifdef fptest}'fpParseTTF',{$endif}TTestEmptyParseTTF{$ifdef fptest}.Suite{$endif});
- RegisterTest({$ifdef fptest}'fpParseTTF',{$endif}TTestLiberationFont{$ifdef fptest}.Suite{$endif});
- RegisterTest({$ifdef fptest}'fpParseTTF',{$endif}TTestFreeSansFont{$ifdef fptest}.Suite{$endif});
- end.
|