Home | History | Annotate | only in /external/freetype/builds/mac
Up to higher level directory
NameDateSize
ascii2mpw.py22-Oct-20201K
freetype-Info.plist22-Oct-2020794
FreeType.m68k_cfm.make.txt22-Oct-20206K
FreeType.m68k_far.make.txt22-Oct-20206K
FreeType.ppc_carbon.make.txt22-Oct-20206.2K
FreeType.ppc_classic.make.txt22-Oct-20206.2K
ftlib.prj.xml22-Oct-202071.8K
ftmac.c22-Oct-202042.7K
README22-Oct-202014.1K

README

      1 This folder contains
      2 
      3   * Makefile skeletons for Apple MPW (Macintosh's Programmer's Workshop)
      4 
      5   * Python script to generate MPW makefile from skeleton
      6 
      7   * Metrowerks CodeWarrior 9.0 project file in XML format
      8 
      9 ------------------------------------------------------------
     10 
     11 1. What is this
     12 ---------------
     13 
     14 Files in this directory are designed to build FreeType
     15 running on classic MacOS. To build FreeType running on
     16 Mac OS X, build as the system is UNIX.
     17 
     18 However, Mac OS X is most useful to manipulate files in
     19 vanilla FreeType to fit classic MacOS.
     20 
     21 The information about MacOS specific API is written in
     22 appendix of this document.
     23 
     24 2. Requirement
     25 --------------
     26 
     27 You can use MPW: a free-charged developer environment
     28 by Apple, or CodeWarrior: a commercial developer
     29 environment by Metrowerks. GCC for MPW and Symantec
     30 "Think C" are not tested at present.
     31 
     32 
     33   2-1. Apple MPW
     34   --------------
     35 
     36   Following C compilers are tested:
     37 
     38       m68k target:	Apple SC  8.9.0d3e1
     39       ppc  target:	Apple MrC 5.0.0d3c1
     40 
     41   The final MPW-GM (official release on 1999/Dec) is too
     42   old and cannot compile FreeType, because bundled C
     43   compilers cannot search header files in sub directories.
     44   Updating by the final MPW-PR (pre-release on 2001/Feb)
     45   is required.
     46 
     47   Required files are downloadable from:
     48 
     49       http://developer.apple.com/tools/mpw-tools/index.html
     50 
     51   Also you can find documents how to update by MPW-PR.
     52 
     53   Python is required to restore MPW makefiles from the
     54   skeletons. Python bundled to Mac OS X is enough. For
     55   classic MacOS, MacPython is available:
     56 
     57       http://homepages.cwi.nl/~jack/macpython/
     58 
     59   MPW requires all files are typed by resource fork.
     60   ResEdit bundled to MPW is enough. In Mac OS X,
     61   /Developer/Tools/SetFile of DevTool is useful to
     62   manipulate from commandline.
     63 
     64   2-2. Metrowerks CodeWarrior
     65   ---------------------------
     66 
     67   XML project file is generated and tested by
     68   CodeWarrior 9.0.  Older versions are not tested
     69   at all. At present, static library for ppc target
     70   is available in the project file.
     71 
     72 
     73 3. How to build
     74 ---------------
     75 
     76   3-1. Apple MPW
     77   --------------
     78   Detailed building procedure by Apple MPW is
     79   described in following.
     80 
     81     3-1-1. Generate MPW makefiles from the skeletons
     82     ------------------------------------------------
     83 
     84     Here are 4 skeletons for following targets are
     85     included.
     86 
     87     - FreeType.m68k_far.make.txt
     88       Ancient 32bit binary executable format for
     89       m68k MacOS: System 6, with 32bit addressing
     90       mode (far-pointer-model) So-called "Toolbox"
     91       API is used.
     92 
     93     - FreeType.m68k_cfm.make.txt
     94       CFM binary executable format for m68k MacOS:
     95       System 7. So-called "Toolbox" API is used.
     96 
     97     - FreeType.ppc_classic.make.txt
     98       CFM binary executable format for ppc MacOS:
     99       System 7, MacOS 8, MacOS 9. So-called "Toolbox"
    100       API is used.
    101 
    102     - FreeType.ppc_carbon.make.txt
    103       CFM binary executable format for ppc MacOS:
    104       MacOS 9. Carbon API is used.
    105 
    106     At present, static library is only supported,
    107     although targets except of m68k_far are capable
    108     to use shared library.
    109 
    110     MPW makefile syntax uses 8bit characters. To keep
    111     from violating them during version control, here
    112     we store skeletons in pure ASCII format. You must
    113     generate MPW makefile by Python script ascii2mpw.py.
    114 
    115     In Mac OS X terminal, you can convert as:
    116 
    117 	python builds/mac/ascii2mpw.py \
    118 		< builds/mac/FreeType.m68k_far.make.txt \
    119 		> FreeType.m68k_far.make
    120 
    121     The skeletons are designed to use in the top
    122     directory where there are builds, include, src etc.
    123     You must name the generated MPW makefile by removing
    124     ".txt" from source skeleton name.
    125 
    126     3-1-2. Add resource forks to related files
    127     ------------------------------------------
    128 
    129     MPW's Make and C compilers cannot recognize files
    130     without resource fork. You have to add resource
    131     fork to the files that MPW uses. In Mac OS X
    132     terminal of the system, you can do as:
    133 
    134 	find . -name '*.[ch]' -exec \
    135 		/Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \;
    136 
    137 	find . -name '*.make' -exec \
    138 		/Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \;
    139 
    140 
    141     3-1-3. Open MPW shell and build
    142     -------------------------------
    143 
    144     Open MPW shell and go to the top directory that
    145     FreeType sources are extracted (MPW makefile must
    146     be located in there), from "Set Directory" in
    147     "Directory" menu.
    148 
    149     Choose "Build" from "Build" menu, and type the
    150     name of project by removing ".make" from MPW
    151     makefile, as: FreeType.m68k_far
    152 
    153     If building is successfully finished, you can find
    154     built library in objs/ directory.
    155 
    156 
    157   3-2. Metrowerks CodeWarrior
    158   ---------------------------
    159 
    160   Detailed building procedure by Metrowerks
    161   CodeWarrior (CW) 9.0 is described in following.
    162 
    163     3-2-1. Import XML project file
    164     ------------------------------
    165 
    166     CW XML project file is not ready for double-
    167     click. Start CodeWarrior IDE, and choose
    168     "Import project" in "File" menu. Choose XML
    169     project file: builds/mac/ftlib.prj.xml.
    170     In next, you will be asked where to save CW
    171     native project file: you must choose
    172     "builds/mac/ftlib.prj". The project file is
    173     designed with relative path from there. After
    174     CW native project file is generated, it is
    175     automatically loaded, small project window
    176     titled "ftlib.prj" is displayed.
    177 
    178     3-2-2. Building
    179     ---------------
    180     Choose "Make" from "Project" menu. If building
    181     is successfully finished, you can find built
    182     library at objs/FreeTypeLib.
    183 
    184 4. TODO
    185 -------
    186 
    187   4-1. All modules should be included
    188   -----------------------------------
    189 
    190   At present, MPW makefiles and CW project file are
    191   just updated versions of these by Leonard. Some
    192   modules are added after the last maintenance, they
    193   are not included.
    194 
    195   4-2. Working test with ftdemos
    196   ------------------------------
    197 
    198   At present, MPW makefiles and CW project file can
    199   build FreeType for classic MacOS. But their working
    200   behaviours are not tested at all. Building ftdemos
    201   for classic MacOS and working test is required.
    202 
    203   4-3. Porting Jam onto MPW
    204   -------------------------
    205 
    206   FreeType uses Jam (and FT-Jam) for unified cross-
    207   platform building tool. At present, Jam is not ported
    208   to MPW. To update classic MacOS support easily,
    209   building by Jam is expected on MPW.
    210 
    211 
    212 APPENDIX I
    213 ----------
    214 
    215   A-1. Framework dependencies
    216   ---------------------------
    217 
    218   src/base/ftmac.c adds two Mac-specific features to
    219   FreeType. These features are based on MacOS libraries.
    220 
    221   * accessing resource-fork font
    222   The fonts for classic MacOS store their graphical data
    223   in resource forks which cannot be accessed via ANSI C
    224   functions. FreeType2 provides functions to handle such
    225   resource fork fonts, they are based on File Manager
    226   framework of MacOS. In addition, HFS and HFS+ file
    227   system driver of Linux is supported. Following
    228   functions are for this purpose.
    229 
    230     FT_New_Face_From_Resource()
    231     FT_New_Face_From_FSSpec()
    232     FT_New_Face_From_FSRef()
    233 
    234   * resolving font name to font file
    235   The font menu of MacOS application prefers font name
    236   written in FOND resource than sfnt resource. FreeType2
    237   provides functions to find font file by name in MacOS
    238   application, they are based on QuickDraw Font Manager
    239   and Apple Type Service framework of MacOS.
    240 
    241     FT_GetFile_From_Mac_Name()
    242     FT_GetFile_From_Mac_ATS_Name()
    243 
    244   Working functions for each MacOS are summarized as
    245   following.
    246 
    247   upto MacOS 6:
    248     not tested (you have to obtain MPW 2.x)
    249 
    250   MacOS 7.x, 8.x, 9.x (without CarbonLib):
    251     FT_GetFile_From_Mac_Name()
    252     FT_New_Face_From_Resource()
    253     FT_New_Face_From_FSSpec()
    254 
    255   MacOS 9.x (with CarbonLib):
    256     FT_GetFile_From_Mac_Name()
    257     FT_New_Face_From_Resource()
    258     FT_New_Face_From_FSSpec()
    259     FT_New_Face_From_FSRef()
    260 
    261   Mac OS X upto 10.4.x:
    262     FT_GetFile_From_Mac_Name()     deprecated
    263     FT_New_Face_From_FSSpec()      deprecated
    264     FT_GetFile_From_Mac_ATS_Name() deprecated?
    265     FT_New_Face_From_FSRef()
    266 
    267   A-2. Deprecated Functions
    268   -------------------------
    269 
    270     A-2-1. FileManager
    271     ------------------
    272 
    273     For convenience to write MacOS application, ftmac.c
    274     provides functions to specify a file by FSSpec and FSRef,
    275     because the file identification pathname had ever been
    276     unrecommended method in MacOS programming.
    277 
    278     Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec
    279     datatype is noticed as deprecated, and recommended to
    280     migrate to FSRef datatype. The big differences of FSRef
    281     against FSSpec are explained in Apple TechNotes 2078.
    282 
    283     http://developer.apple.com/technotes/tn2002/tn2078.html
    284 
    285     - filename length: the max length of file
    286     name of FSRef is 255 chars (it is limit of HFS+),
    287     that of FSSpec is 31 chars (it is limit of HFS).
    288 
    289     - filename encoding: FSSpec is localized by
    290     legacy encoding for each language system,
    291     FSRef is Unicode enabled.
    292 
    293     A-2-2. FontManager
    294     ------------------
    295 
    296     Following functions receive QuickDraw fontname:
    297 
    298       FT_GetFile_From_Mac_Name()
    299 
    300     QuickDraw is deprecated and replaced by Quartz
    301     since Mac OS X 10.4. They are still kept for
    302     backward compatibility. By undefinition of
    303     HAVE_QUICKDRAW in building, you can change these
    304     functions to return FT_Err_Unimplemented always.
    305 
    306     Replacement functions are added for migration.
    307 
    308       FT_GetFile_From_Mac_ATS_Name()
    309 
    310     They are usable on Mac OS X only. On older systems,
    311     these functions return FT_Err_Unimplemented always.
    312 
    313     The detailed incompatibilities and possibility
    314     of FontManager emulation without QuickDraw is
    315     explained in
    316 
    317       http://www.gyve.org/~mpsuzuki/ats_benchmark.html
    318 
    319   A-3. Framework Availabilities
    320   -----------------------------
    321 
    322   The framework of MacOS are often revised, especially
    323   when new format of binary executable is introduced.
    324   Following table is the minimum version of frameworks
    325   to use functions used in FreeType2. The table is
    326   extracted from MPW header files for assembly language.
    327 
    328   *** NOTE ***
    329   The conditional definition of available data type
    330   in MPW compiler is insufficient. You can compile
    331   program using FSRef data type for older systems
    332   (MacOS 7, 8) that don't know FSRef data type.
    333 
    334 
    335                                       +-------------------+-----------------------------+
    336            CPU                        |      mc680x0      |           PowerPC           |
    337                                       +---------+---------+---------+---------+---------+
    338   Binary Executable Format            | Classic | 68K-CFM | CFM     | CFM     | Mach-O  |
    339                                       +---------+---------+---------+---------+---------+
    340        Framework API                  | Toolbox | Toolbox | Toolbox | Carbon  | Carbon  |
    341                                       +---------+---------+---------+---------+---------+
    342 
    343                                       +---------+---------+---------+---------+---------+
    344                                       |    ?(*) |Interface|Interface|CarbonLib|Mac OS X |
    345                                       |         |Lib      |Lib      |         |         |
    346 * Files.h                             +---------+---------+---------+---------+---------+
    347 PBGetFCBInfoSync()                    |    o    | 7.1-    | 7.1-    | 1.0-    |    o    |
    348 FSMakeFSSpec()                        |    o    | 7.1-    | 7.1-    | 1.0-    |    o    |
    349 FSGetForkCBInfo()                     |    o    |   (**)  | 9.0-    | 1.0-    |    o    |
    350 FSpMakeFSRef()                        |    o    |   (**)  | 9.0-    | 1.0-    |    o    |
    351 FSGetCatalogInfo()                    |    o    |   (**)  | 9.0-    | 1.0-    |   -10.3 |
    352 FSPathMakeRef()                       |    x    |    x    |    x    | 1.1-    |   -10.3 |
    353                                       +---------+---------+---------+---------+---------+
    354 
    355                                       +---------+---------+---------+---------+---------+
    356                                       |    ?(*) |Font     |Font     |CarbonLib|Mac OS X |
    357                                       |         |Manager  |Manager  |         |         |
    358 * Fonts.h                             +---------+---------+---------+---------+---------+
    359 FMCreateFontFamilyIterator()          |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    360 FMDisposeFontFamilyIterator()         |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    361 FMGetNextFontFamily()                 |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    362 FMGetFontFamilyName()                 |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    363 FMCreateFontFamilyInstanceIterator()  |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    364 FMDisposeFontFamilyInstanceIterator() |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    365 FMGetNextFontFamilyInstance()         |    x    |    x    | 9.0-    | 1.0-    |   -10.3 |
    366                                       +---------+---------+---------+---------+---------+
    367 
    368                                       +---------+---------+---------+---------+---------+
    369                                       |    -    |    -    |    -    |CarbonLib|Mac OS X |
    370 * ATSFont.h (***)                     +---------+---------+---------+---------+---------+
    371 ATSFontFindFromName()                 |    x    |    x    |    x    |    x    |    o    |
    372 ATSFontGetFileSpecification()         |    x    |    x    |    x    |    x    |    o    |
    373                                       +---------+---------+---------+---------+---------+
    374 
    375     (*)
    376     In the "Classic": the original binary executable
    377     format, these framework functions are directly
    378     transformed to MacOS system call. Therefore, the
    379     exact availability should be checked by running
    380     system.
    381 
    382     (**)
    383     InterfaceLib is bundled to MacOS and its version
    384     is usually equal to MacOS. There's no separate
    385     update for InterfaceLib. It is supposed that
    386     there's no InterfaceLib 9.x for m68k platforms.
    387     In fact, these functions are FSRef dependent.
    388 
    389     (***)
    390     ATSUI framework is available on ATSUnicode 8.5 on
    391     ppc Toolbox CFM, CarbonLib 1.0 too. But its base:
    392     ATS font manager is not published in these versions.
    393 
    394 ------------------------------------------------------------
    395 Last update: 2013-Nov-03.
    396 
    397 Currently maintained by
    398 	suzuki toshiya, <mpsuzuki (a] hiroshima-u.ac.jp>
    399 Originally prepared by
    400 	Leonard Rosenthol, <leonardr (a] lazerware.com>
    401 	Just van Rossum, <just (a] letterror.com>
    402