123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- #------------------------------------------------------------------------------
- # $File: fonts,v 1.43 2019/07/16 11:11:31 christos Exp $
- # fonts: file(1) magic for font data
- #
- 0 search/1 FONT ASCII vfont text
- 0 short 0436 Berkeley vfont data
- 0 short 017001 byte-swapped Berkeley vfont data
- # PostScript fonts (must precede "printer" entries), quinlan@yggdrasil.com
- 0 string %!PS-AdobeFont-1. PostScript Type 1 font text
- >20 string >\0 (%s)
- 6 string %!PS-AdobeFont-1. PostScript Type 1 font program data
- 0 string %!FontType1 PostScript Type 1 font program data
- 6 string %!FontType1 PostScript Type 1 font program data
- 0 string %!PS-Adobe-3.0\ Resource-Font PostScript Type 1 font text
- # Summary: PostScript Type 1 Printer Font Metrics
- # URL: https://en.wikipedia.org/wiki/PostScript_fonts
- # Reference: https://partners.adobe.com/public/developer/en/font/5178.PFM.pdf
- # Modified by: Joerg Jenderek
- # Note: moved from ./msdos magic
- # dfVersion 256=0100h
- 0 uleshort 0x0100
- # GRR: line above is too general as it catches also TrueType font,
- # raw G3 data FAX, WhatsApp encrypted and Panorama database
- # dfType 129=0081h
- >66 uleshort 0x0081
- # dfVertRes 300=012Ch not needed as additional test
- #>>70 uleshort 0x012c
- # dfHorizRes 300=012Ch
- #>>>72 uleshort 0x012c
- # dfDriverInfo points to postscript information section
- >>(101.l) string/c Postscript Printer Font Metrics
- # above labeled "PFM data" by ./msdos (version 5.28) or "Adobe Printer Font Metrics" by TrID
- !:mime application/x-font-pfm
- # AppleShare Print Server
- #!:apple ASPS????
- !:ext pfm
- # dfCopyright 60 byte null padded Copyright string. uncomment it to get old looking
- #>>>6 string >\060 - %-.60s
- # dfDriverInfo
- >>>139 ulelong >0
- # often abbreviated and same as filename
- >>>>(139.l) string x %s
- # dfSize
- >>>2 ulelong x \b, %d bytes
- # dfFace 210=D2h 9Eh
- >>>105 ulelong >0
- # Windows font name
- >>>>(105.l) string x \b, %s
- # dfItalic
- >>>80 ubyte 1 italic
- # dfUnderline
- >>>81 ubyte 1 underline
- # dfStrikeOut
- >>>82 ubyte 1 strikeout
- # dfWeight 400=0x0190 300=0x012c 500=0x01f4 600=0x0258 700=0x02bc
- >>>83 uleshort >699 bold
- # dfPitchAndFamily 16 17 48 49 64 65
- >>>90 ubyte 16 serif
- >>>90 ubyte 17 serif proportional
- #>>>90 ubyte 48 other
- >>>90 ubyte 49 proportional
- >>>90 ubyte 64 script
- >>>90 ubyte 65 script proportional
- # X11 font files in SNF (Server Natural Format) format
- # updated by Joerg Jenderek at Feb 2013
- # http://computer-programming-forum.com/51-perl/8f22fb96d2e34bab.htm
- 0 belong 00000004 X11 SNF font data, MSB first
- #>104 belong 00000004 X11 SNF font data, MSB first
- !:mime application/x-font-sfn
- # GRR: line below too general as it catches also Xbase index file t3-CHAR.NDX
- 0 lelong 00000004
- >104 lelong 00000004 X11 SNF font data, LSB first
- !:mime application/x-font-sfn
- # X11 Bitmap Distribution Format, from Daniel Quinlan (quinlan@yggdrasil.com)
- 0 search/1 STARTFONT\ X11 BDF font text
- # From: Joerg Jenderek
- # URL: https://grub.gibibit.com/New_font_format
- # Reference: util/grub-mkfont.c
- # include/grub/fontformat.h
- # FONT_FORMAT_SECTION_NAMES_FILE
- 0 string FILE
- # FONT_FORMAT_PFF2_MAGIC
- >8 string PFF2
- # leng 4 only at the moment
- >>4 ubelong 4
- # FONT_FORMAT_SECTION_NAMES_FONT_NAME
- >>>12 string NAME GRUB2 font
- !:mime application/x-font-pf2
- !:ext pf2
- # length of font_name
- >>>>16 ubelong >0
- # font_name
- >>>>>20 string >\0 "%-s"
- # X11 fonts, from Daniel Quinlan (quinlan@yggdrasil.com)
- # PCF must come before SGI additions ("MIPSEL MIPS-II COFF" collides)
- 0 string \001fcp X11 Portable Compiled Font data,
- >12 lelong ^0x08 bit: LSB,
- >12 lelong &0x08 bit: MSB,
- >12 lelong ^0x04 byte: LSB first
- >12 lelong &0x04 byte: MSB first
- 0 string D1.0\015 X11 Speedo font data
- #------------------------------------------------------------------------------
- # FIGlet fonts and controlfiles
- # From figmagic supplied with Figlet version 2.2
- # "David E. O'Brien" <obrien@FreeBSD.ORG>
- 0 string flf FIGlet font
- >3 string >2a version %-2.2s
- 0 string flc FIGlet controlfile
- >3 string >2a version %-2.2s
- # libGrx graphics lib fonts, from Albert Cahalan (acahalan@cs.uml.edu)
- # Used with djgpp (DOS Gnu C++), sometimes Linux or Turbo C++
- 0 belong 0x14025919 libGrx font data,
- >8 leshort x %dx
- >10 leshort x \b%d
- >40 string x %s
- # Misc. DOS VGA fonts, from Albert Cahalan (acahalan@cs.uml.edu)
- 0 belong 0xff464f4e DOS code page font data collection
- 7 belong 0x00454741 DOS code page font data
- 7 belong 0x00564944 DOS code page font data (from Linux?)
- 4098 string DOSFONT DOSFONT2 encrypted font data
- # From: Joerg Jenderek
- # URL: http://fileformats.archiveteam.org/wiki/GEM_bitmap_font
- # Reference: http://cd.textfiles.com/ataricompendium/BOOK/HTML/APPENDC.HTM#cnt
- #
- # usual case with lightening mask and skewing mask 5555h~UU
- #62 ulelong 0x55555555
- # skip cl8m8ocofedso.testfile by looking for face size lower/equal 72
- #>2 uleshort <73
- #>>0 use gdos-font
- # BOX18.GFT COWBOY30.GFT ROYALK30.GFT
- #62 ulelong 0
- # skip ISO 9660 CD-ROM ./filesystem by looking for low positive face size
- #>2 uleshort >2
- # skip DOS 2.0 backup id file ./msdos by looking for face size lower/equal 72
- #>>2 uleshort <73
- # skip MS oem.hlp, some Windows ICO ./msdos by looking for valid long name like WYE
- #>>>4 ulelong >0x001F1f1F
- # skip Microsoft WinWord 2.0 ./msdos by looking for positive offset to font data
- #>>>>76 ulelong >83
- #>>>>>0 use gdos-font
- 0 name gdos-font
- >0 uleshort x GEM GDOS font
- !:mime application/x-font-gdos
- # also .eps found like AA070GEP.EPS AI360GEP.EPS
- !:ext fnt/gtf
- # font name like Big&Tall, Celtic #s, Courier, University Bold, WYE
- >4 string x %.32s
- # face size in points 3-72 SLSS03CG.FNT H1CELT72.FNT
- >2 uleshort x %u
- # face ID (must be unique)
- >0 uleshort x \b, ID 0x%4.4x
- # lowest character index in face (4 but usually 32 for disk-loaded fonts)
- #>36 uleshort !32 \b, unusual character index %u
- # width of the widest character like 0 8 10 12 16 24 32
- #>50 uleshort x \b, %u char width
- # width of the widest character cell like 8 11 12 14 15 16 33 67
- #>52 uleshort x \b, %u cell width
- # thickening size in pixel like 0 1 2 3 4 5 6 7 8
- #>58 uleshort x \b, %u thick
- # lightening mask to eliminate pixels, usually 5555h
- >62 uleshort !0x5555 \b, lightening mask 0x%x
- # skewing mask to determine when to perform additional rotation when skewing, usually 5555h
- >64 uleshort !0x5555 \b, skewing mask 0x%x
- # offset to optional horizontal offset table 0 58h~88 5eh 252h
- #>68 ulelong x \b, 0x%x horizontal table offset
- # offset of character offset table 54h for many *.GFT 55h 58h 5Eh 120h 1D4h 202h 220h
- #>72 ulelong x \b, 0x%x coffset
- # offset to font data like 116h 118h 158 20Ah 20Eh
- >76 ulelong x \b, 0x%x foffset
- # form width in bytes like 58 67 156 190 227 317 345
- #>80 uleshort x \b, %u fwidth
- # form height in bytes like 4 8 11 17 26 56 70 90 120 146 150
- #>82 uleshort x \b, %u fheight
- # pointer to the next font like 0 10000h 20000h 30000h 40000h 60000h 80000h E0000h D0000h
- #>84 ulelong x \b, 0x%x noffset
- # downloadable fonts for browser (prints type) anthon@mnt.org
- # https://tools.ietf.org/html/rfc3073
- 0 string PFR1 Portable Font Resource font data (new)
- >102 string >0 \b: %s
- 0 string PFR0 Portable Font Resource font data (old)
- >4 beshort >0 version %d
- # True Type fonts
- # Modified by: Joerg Jenderek
- # URL: https://en.wikipedia.org/wiki/TrueType
- # Reference: https://developer.apple.com/fonts/TrueType-Reference-Manual/
- #
- # sfnt version "typ1" used by some Apple, but no example found
- 0 string typ1
- >0 use sfnt-font
- >0 use sfnt-names
- # sfnt version "true" used by some Apple
- 0 string true
- >0 use sfnt-font
- >0 use sfnt-names
- # GRR: below test is too general
- # sfnt version often 0x00010000
- 0 string \000\001\000\000
- >0 use sfnt-font
- >0 use sfnt-names
- # validate and display sfnt font data like number of tables
- 0 name sfnt-font
- # file 5.30 version assumes 00FFh as maximal number of tables
- #>4 ubeshort <0x0100
- # maximal 27 tables found like in Skia.ttf
- # 46 different table names mentioned on Apple specification
- # skip 1st sequence of DOS 2 backup with path separator (\~92 or /~47) misinterpreted as table number
- >4 ubeshort <47
- # skip bad examples with garbage table names like in a5.show HYPERC MAC
- # tag names consist of up to four characters padded with spaces at end like
- # BASE DSIG OS/2 Zapf acnt glyf cvt vmtx xref ...
- >>12 regex/4l \^[A-Za-z][A-Za-z][A-Za-z/][A-Za-z2\ ]
- #>>>0 ubelong x \b, sfnt version 0x%x
- >>>0 ubelong !0x4f54544f TrueType
- !:mime font/sfnt
- !:apple ????tfil
- # .ttf for TrueType font
- # EUDC.tte created by privat character editor %WINDIR%\system32\eudcedit.exe
- !:ext ttf/tte
- # sfnt version 4F54544Fh~OTTO
- >>>0 ubelong =0x4f54544f OpenType
- !:mime font/otf
- !:apple ????OTTO
- !:ext otf
- >>>0 ubelong x Font data
- # DSIG=44454947h table name implies a digitally signed font
- # search range = number of tables * 16 =< maximal number of tables * 16 = 27 * 16 = 432
- >>>12 search/432 DSIG \b, digitally signed
- >>>4 ubeshort x \b, %d tables
- # minimal 9 tables found like in NISC18030.ttf
- #>>>4 ubeshort <10 TMIN
- #>>>4 ubeshort >24 TBIG
- # table directory entries
- >>>12 string x \b, 1st "%4.4s"
- # search and display 1st name in sfnt font which is often copyright text
- # does not work inside font collections
- 0 name sfnt-names
- # search for naming table
- >12 search/432/s name
- # biggest offset 0x0100bd28 like Windows10 Fonts\simsunb.ttf
- #>>>>&8 ubelong >0x0100bd27 BIGGEST OFFSET
- >>&8 ubelong >0x00100000
- # offset of name table
- >>>&-4 ubelong x \b, name offset 0x%x
- # GRR: pointer to name table only works if offset ~< FILE_BYTES_MAX = 100000h defined in src\file.h
- >>&8 ubelong <0x00100000
- >>>&-16 ubelong x
- # name table
- >>>>(&8.L) ubequad x
- # invalid format selector
- #>>>>>&-8 ubeshort !0 \b, invalid selector %x
- # minimal 3 name records found like in c:\Program Files (x86)\Tesseract-OCR\tessdata\pdf.ttf
- # maximal 1227 name records found like in Apple Chancery.ttf
- #>>>>>&-6 ubeshort <0x4 mincount
- #>>>>>&-6 ubeshort >130 maxcount
- >>>>>&-6 ubeshort x \b, %d names
- # offset to start of string storage from start of table
- #>>>>>&-4 ubeshort x \b, record offset %d
- # 1st name record
- # string offset from start of storage area
- #>>>>>&8 ubeshort x \b, string offset %d
- # string length
- #>>>>>&6 ubeshort x \b, string length %d
- # minimal name string 7 like in c:\Program Files (x86)\Kodi\addons\webinterface.default\lib\video-js\font\VideoJS.ttf
- # also found 0 like in SWZCONLN.TTF
- #>>>>>&6 ubeshort <8 MIN STRING
- # maximal name string 806 like in c:\Windows\Fonts\palabi.ttf
- #>>>>>&6 ubeshort >805 MAX STRING
- # platform identifier: 0~Apple Unicode, 1~Macintosh, 3~Microsoft
- #>>>>>&-2 ubeshort >3 BAD PLATFORM
- >>>>>&-2 ubeshort 0 \b, Unicode
- >>>>>&-2 ubeshort 1 \b, Macintosh
- >>>>>&-2 ubeshort 3 \b, Microsoft
- # languageID (0~english Macintosh, 0409h~english Microsoft, ...)
- >>>>>&2 ubeshort >0 \b, language 0x%x
- # name identifiers
- # often 0~copyright, 1~font, 2~font subfamily, 5~version, 13~license, 19~sample, ...
- >>>>>&4 ubeshort >0 \b, type %d string
- # platform specific encoding:
- # 0~undefined character set, 1~UGL set with Unicode, 3~Unicode 2.0 BMP only, 4~Unicode 2.0
- #>>>>>&0 ubeshort x \b, %d encoding
- >>>>>&0 ubeshort 0
- # handle only name string offset 0 because do not know how to add 2 relative offsets
- >>>>>>&6 ubeshort 0
- >>>>>>>&(&-14.S-18) ubyte !0
- # GRR: instead 806 only first MAXstring = 96 characters are displayed as defined in src\file.h
- # often copyright string that starts like \251 2006 The Monotype Corporation
- >>>>>>>>&-1 string x \b, %-11.96s
- # test for unicode string
- >>>>>>>&(&-14.S-18) ubyte 0
- >>>>>>>>&0 lestring16 x \b, %-11.96s
- # unicode encoding
- >>>>>&0 ubeshort >0
- >>>>>>&6 ubeshort 0
- >>>>>>>&(&-14.S-17) lestring16 x \b, %-11.96s
- 0 string \007\001\001\000Copyright\ (c)\ 199 Adobe Multiple Master font
- 0 string \012\001\001\000Copyright\ (c)\ 199 Adobe Multiple Master font
- # TrueType/OpenType font collections (.ttc)
- # URL: https://en.wikipedia.org/wiki/OpenType
- # https://www.microsoft.com/typography/otspec/otff.htm
- # Modified by: Joerg Jenderek
- # Note: container for TrueType, OpenType font
- 0 string ttcf
- # skip ASCII text
- >4 ubyte 0
- # sfnt version often 0x00010000 of 1st table is TrueType
- >>(12.L) ubelong !0x4f54544f TrueType
- !:mime font/ttf
- !:apple ????tfil
- !:ext ttc
- # sfnt version 4F54544Fh~OTTO of 1st table is OpenType font
- >>(12.L) ubelong =0x4f54544f OpenType
- !:mime font/otf
- !:apple ????OTTO
- # no example found for otc
- !:ext ttc/otc
- >>4 ubyte x font collection data
- #!:mime font/collection
- # TCC version
- >>4 belong 0x00010000 \b, 1.0
- >>4 belong 0x00020000 \b, 2.0
- >>8 ubelong >0 \b, %d fonts
- # array offset size = fonts * offsetsize = fonts * 4
- >>(8.L*4) ubequad x
- # 0x44454947 = 'DSIG'
- >>>&4 belong 0x44534947 \b, digitally signed
- # offset to 1st font
- >>12 ubelong x \b, at 0x%x
- # point to 1st font that starts with sfnt version
- >>(12.L) use sfnt-font
- # Opentype font data from Avi Bercovich
- 0 string OTTO OpenType font data
- !:mime application/vnd.ms-opentype
- # From: Alex Myczko <alex@aiei.ch>
- 0 string SplineFontDB: Spline Font Database
- !:mime application/vnd.font-fontforge-sfd
- >14 string x version %s
- # EOT
- 0x40 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
- >0x22 string LP Embedded OpenType (EOT)
- # workaround until there's lepstring16
- # >>0x52 lepstring16/h >\0 \b, %s family
- >>0x52 short !0
- >>>0x54 lestring16 x \b, %s family
- !:mime application/vnd.ms-fontobject
- # Web Open Font Format (.woff)
- 0 name woff
- >4 belong 0x00010000 \b, TrueType
- >4 belong 0x4F54544F \b, CFF
- >4 belong 0x74727565 \b, TrueType
- >4 default x
- >>4 belong x \b, flavor %d
- >8 belong x \b, length %d
- #>12 beshort x \b, numTables %d
- #>14 beshort x \b, reserved %d
- #>16 belong x \b, totalSfntSize %d
- # https://www.w3.org/TR/WOFF/
- 0 string wOFF Web Open Font Format
- >0 use woff
- >20 beshort x \b, version %d
- >22 beshort x \b.%d
- # https://www.w3.org/TR/WOFF2/
- 0 string wOF2 Web Open Font Format (Version 2)
- >0 use woff
- #>20 belong x \b, totalCompressedSize %d
- >24 beshort x \b, version %d
- >26 beshort x \b.%d
|