Imported Upstream version 5.32
[platform/upstream/file.git] / magic / Magdir / fonts
index aab7412..7e9b0da 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: fonts,v 1.35 2017/03/17 21:35:28 christos Exp $
+# $File: fonts,v 1.37 2017/06/24 00:39:00 christos Exp $
 # fonts:  file(1) magic for font data
 #
 0      search/1        FONT            ASCII vfont text
 >4     beshort         >0              version %d
 
 # True Type fonts
-0      string  \000\001\000\000\000    TrueType font data
-!:mime application/x-font-ttf
+# 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 application/font-sfnt
+#!:mime        font/ttf
+!: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 application/font-sfnt
+#!: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
 # http://www.microsoft.com/typography/otspec/otff.htm
-0      string          ttcf            TrueType font collection data
->4     belong          0x00010000      \b, 1.0
->>8    belong          >0              \b, %d fonts
->4     belong          0x00020000      \b, 2.0
->>8    belong          >0              \b, %d fonts
+# 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 application/font-sfnt
+#!: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'
->>>16  belong          0x44534947      \b, digitally signed
+>>>&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