| Index: third_party/freetype2/src/builds/mac/README
|
| diff --git a/third_party/freetype2/src/builds/mac/README b/third_party/freetype2/src/builds/mac/README
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f58e47d4ad28520b8da0a820e8e2349869b9e7c0
|
| --- /dev/null
|
| +++ b/third_party/freetype2/src/builds/mac/README
|
| @@ -0,0 +1,401 @@
|
| +This folder contains
|
| +
|
| + * Makefile skeletons for Apple MPW (Macintosh's Programmer's Workshop)
|
| +
|
| + * Python script to generate MPW makefile from skeleton
|
| +
|
| + * Metrowerks CodeWarrior 9.0 project file in XML format
|
| +
|
| +------------------------------------------------------------
|
| +
|
| +1. What is this
|
| +---------------
|
| +
|
| +Files in this directory are designed to build FreeType
|
| +running on classic MacOS. To build FreeType running on
|
| +Mac OS X, build as the system is UNIX.
|
| +
|
| +However, Mac OS X is most useful to manipulate files in
|
| +vanilla FreeType to fit classic MacOS.
|
| +
|
| +The information about MacOS specific API is written in
|
| +appendix of this document.
|
| +
|
| +2. Requirement
|
| +--------------
|
| +
|
| +You can use MPW: a free-charged developer environment
|
| +by Apple, or CodeWarrior: a commercial developer
|
| +environment by Metrowerks. GCC for MPW and Symantec
|
| +"Think C" are not tested at present.
|
| +
|
| +
|
| + 2-1. Apple MPW
|
| + --------------
|
| +
|
| + Following C compilers are tested:
|
| +
|
| + m68k target: Apple SC 8.9.0d3e1
|
| + ppc target: Apple MrC 5.0.0d3c1
|
| +
|
| + The final MPW-GM (official release on 1999/Dec) is too
|
| + old and cannot compile FreeType, because bundled C
|
| + compilers cannot search header files in sub directories.
|
| + Updating by the final MPW-PR (pre-release on 2001/Feb)
|
| + is required.
|
| +
|
| + Required files are downloadable from:
|
| +
|
| + http://developer.apple.com/tools/mpw-tools/index.html
|
| +
|
| + Also you can find documents how to update by MPW-PR.
|
| +
|
| + Python is required to restore MPW makefiles from the
|
| + skeletons. Python bundled to Mac OS X is enough. For
|
| + classic MacOS, MacPython is available:
|
| +
|
| + http://homepages.cwi.nl/~jack/macpython/
|
| +
|
| + MPW requires all files are typed by resource fork.
|
| + ResEdit bundled to MPW is enough. In Mac OS X,
|
| + /Developer/Tools/SetFile of DevTool is useful to
|
| + manipulate from commandline.
|
| +
|
| + 2-2. Metrowerks CodeWarrior
|
| + ---------------------------
|
| +
|
| + XML project file is generated and tested by
|
| + CodeWarrior 9.0. Older versions are not tested
|
| + at all. At present, static library for ppc target
|
| + is available in the project file.
|
| +
|
| +
|
| +3. How to build
|
| +---------------
|
| +
|
| + 3-1. Apple MPW
|
| + --------------
|
| + Detailed building procedure by Apple MPW is
|
| + described in following.
|
| +
|
| + 3-1-1. Generate MPW makefiles from the skeletons
|
| + ------------------------------------------------
|
| +
|
| + Here are 4 skeletons for following targets are
|
| + included.
|
| +
|
| + - FreeType.m68k_far.make.txt
|
| + Ancient 32bit binary executable format for
|
| + m68k MacOS: System 6, with 32bit addressing
|
| + mode (far-pointer-model) So-called "Toolbox"
|
| + API is used.
|
| +
|
| + - FreeType.m68k_cfm.make.txt
|
| + CFM binary executable format for m68k MacOS:
|
| + System 7. So-called "Toolbox" API is used.
|
| +
|
| + - FreeType.ppc_classic.make.txt
|
| + CFM binary executable format for ppc MacOS:
|
| + System 7, MacOS 8, MacOS 9. So-called "Toolbox"
|
| + API is used.
|
| +
|
| + - FreeType.ppc_carbon.make.txt
|
| + CFM binary executable format for ppc MacOS:
|
| + MacOS 9. Carbon API is used.
|
| +
|
| + At present, static library is only supported,
|
| + although targets except of m68k_far are capable
|
| + to use shared library.
|
| +
|
| + MPW makefile syntax uses 8bit characters. To keep
|
| + from violating them during version control, here
|
| + we store skeletons in pure ASCII format. You must
|
| + generate MPW makefile by Python script ascii2mpw.py.
|
| +
|
| + In Mac OS X terminal, you can convert as:
|
| +
|
| + python builds/mac/ascii2mpw.py \
|
| + < builds/mac/FreeType.m68k_far.make.txt \
|
| + > FreeType.m68k_far.make
|
| +
|
| + The skeletons are designed to use in the top
|
| + directory where there are builds, include, src etc.
|
| + You must name the generated MPW makefile by removing
|
| + ".txt" from source skeleton name.
|
| +
|
| + 3-1-2. Add resource forks to related files
|
| + ------------------------------------------
|
| +
|
| + MPW's Make and C compilers cannot recognize files
|
| + without resource fork. You have to add resource
|
| + fork to the files that MPW uses. In Mac OS X
|
| + terminal of the system, you can do as:
|
| +
|
| + find . -name '*.[ch]' -exec \
|
| + /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \;
|
| +
|
| + find . -name '*.make' -exec \
|
| + /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \;
|
| +
|
| +
|
| + 3-1-3. Open MPW shell and build
|
| + -------------------------------
|
| +
|
| + Open MPW shell and go to the top directory that
|
| + FreeType sources are extracted (MPW makefile must
|
| + be located in there), from "Set Directory" in
|
| + "Directory" menu.
|
| +
|
| + Choose "Build" from "Build" menu, and type the
|
| + name of project by removing ".make" from MPW
|
| + makefile, as: FreeType.m68k_far
|
| +
|
| + If building is successfully finished, you can find
|
| + built library in objs/ directory.
|
| +
|
| +
|
| + 3-2. Metrowerks CodeWarrior
|
| + ---------------------------
|
| +
|
| + Detailed building procedure by Metrowerks
|
| + CodeWarrior (CW) 9.0 is described in following.
|
| +
|
| + 3-2-1. Import XML project file
|
| + ------------------------------
|
| +
|
| + CW XML project file is not ready for double-
|
| + click. Start CodeWarrior IDE, and choose
|
| + "Import project" in "File" menu. Choose XML
|
| + project file: builds/mac/ftlib.prj.xml.
|
| + In next, you will be asked where to save CW
|
| + native project file: you must choose
|
| + "builds/mac/ftlib.prj". The project file is
|
| + designed with relative path from there. After
|
| + CW native project file is generated, it is
|
| + automatically loaded, small project window
|
| + titled "ftlib.prj" is displayed.
|
| +
|
| + 3-2-2. Building
|
| + ---------------
|
| + Choose "Make" from "Project" menu. If building
|
| + is successfully finished, you can find built
|
| + library at objs/FreeTypeLib.
|
| +
|
| +4. TODO
|
| +-------
|
| +
|
| + 4-1. All modules should be included
|
| + -----------------------------------
|
| +
|
| + At present, MPW makefiles and CW project file are
|
| + just updated versions of these by Leonard. Some
|
| + modules are added after the last maintenance, they
|
| + are not included.
|
| +
|
| + 4-2. Working test with ftdemos
|
| + ------------------------------
|
| +
|
| + At present, MPW makefiles and CW project file can
|
| + build FreeType for classic MacOS. But their working
|
| + behaviours are not tested at all. Building ftdemos
|
| + for classic MacOS and working test is required.
|
| +
|
| + 4-3. Porting Jam onto MPW
|
| + -------------------------
|
| +
|
| + FreeType uses Jam (and FT-Jam) for unified cross-
|
| + platform building tool. At present, Jam is not ported
|
| + to MPW. To update classic MacOS support easily,
|
| + building by Jam is expected on MPW.
|
| +
|
| +
|
| +APPENDIX I
|
| +----------
|
| +
|
| + A-1. Framework dependencies
|
| + ---------------------------
|
| +
|
| + src/base/ftmac.c adds two Mac-specific features to
|
| + FreeType. These features are based on MacOS libraries.
|
| +
|
| + * accessing resource-fork font
|
| + The fonts for classic MacOS store their graphical data
|
| + in resource forks which cannot be accessed via ANSI C
|
| + functions. FreeType2 provides functions to handle such
|
| + resource fork fonts, they are based on File Manager
|
| + framework of MacOS. In addition, HFS and HFS+ file
|
| + system driver of Linux is supported. Following
|
| + functions are for this purpose.
|
| +
|
| + FT_New_Face_From_Resource()
|
| + FT_New_Face_From_FSSpec()
|
| + FT_New_Face_From_FSRef()
|
| +
|
| + * resolving font name to font file
|
| + The font menu of MacOS application prefers font name
|
| + written in FOND resource than sfnt resource. FreeType2
|
| + provides functions to find font file by name in MacOS
|
| + application, they are based on QuickDraw Font Manager
|
| + and Apple Type Service framework of MacOS.
|
| +
|
| + FT_GetFile_From_Mac_Name()
|
| + FT_GetFile_From_Mac_ATS_Name()
|
| +
|
| + Working functions for each MacOS are summarized as
|
| + following.
|
| +
|
| + upto MacOS 6:
|
| + not tested (you have to obtain MPW 2.x)
|
| +
|
| + MacOS 7.x, 8.x, 9.x (without CarbonLib):
|
| + FT_GetFile_From_Mac_Name()
|
| + FT_New_Face_From_Resource()
|
| + FT_New_Face_From_FSSpec()
|
| +
|
| + MacOS 9.x (with CarbonLib):
|
| + FT_GetFile_From_Mac_Name()
|
| + FT_New_Face_From_Resource()
|
| + FT_New_Face_From_FSSpec()
|
| + FT_New_Face_From_FSRef()
|
| +
|
| + Mac OS X upto 10.4.x:
|
| + FT_GetFile_From_Mac_Name() deprecated
|
| + FT_New_Face_From_FSSpec() deprecated
|
| + FT_GetFile_From_Mac_ATS_Name() deprecated?
|
| + FT_New_Face_From_FSRef()
|
| +
|
| + A-2. Deprecated Functions
|
| + -------------------------
|
| +
|
| + A-2-1. FileManager
|
| + ------------------
|
| +
|
| + For convenience to write MacOS application, ftmac.c
|
| + provides functions to specify a file by FSSpec and FSRef,
|
| + because the file identification pathname had ever been
|
| + unrecommended method in MacOS programming.
|
| +
|
| + Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec
|
| + datatype is noticed as deprecated, and recommended to
|
| + migrate to FSRef datatype. The big differences of FSRef
|
| + against FSSpec are explained in Apple TechNotes 2078.
|
| +
|
| + http://developer.apple.com/technotes/tn2002/tn2078.html
|
| +
|
| + - filename length: the max length of file
|
| + name of FSRef is 255 chars (it is limit of HFS+),
|
| + that of FSSpec is 31 chars (it is limit of HFS).
|
| +
|
| + - filename encoding: FSSpec is localized by
|
| + legacy encoding for each language system,
|
| + FSRef is Unicode enabled.
|
| +
|
| + A-2-2. FontManager
|
| + ------------------
|
| +
|
| + Following functions receive QuickDraw fontname:
|
| +
|
| + FT_GetFile_From_Mac_Name()
|
| +
|
| + QuickDraw is deprecated and replaced by Quartz
|
| + since Mac OS X 10.4. They are still kept for
|
| + backward compatibility. By undefinition of
|
| + HAVE_QUICKDRAW in building, you can change these
|
| + functions to return FT_Err_Unimplemented always.
|
| +
|
| + Replacement functions are added for migration.
|
| +
|
| + FT_GetFile_From_Mac_ATS_Name()
|
| +
|
| + They are usable on Mac OS X only. On older systems,
|
| + these functions return FT_Err_Unimplemented always.
|
| +
|
| + The detailed incompatibilities and possibility
|
| + of FontManager emulation without QuickDraw is
|
| + explained in
|
| +
|
| + http://www.gyve.org/~mpsuzuki/ats_benchmark.html
|
| +
|
| + A-3. Framework Availabilities
|
| + -----------------------------
|
| +
|
| + The framework of MacOS are often revised, especially
|
| + when new format of binary executable is introduced.
|
| + Following table is the minimum version of frameworks
|
| + to use functions used in FreeType2. The table is
|
| + extracted from MPW header files for assembly language.
|
| +
|
| + *** NOTE ***
|
| + The conditional definition of available data type
|
| + in MPW compiler is insufficient. You can compile
|
| + program using FSRef data type for older systems
|
| + (MacOS 7, 8) that don't know FSRef data type.
|
| +
|
| +
|
| + +-------------------+-----------------------------+
|
| + CPU | mc680x0 | PowerPC |
|
| + +---------+---------+---------+---------+---------+
|
| + Binary Executable Format | Classic | 68K-CFM | CFM | CFM | Mach-O |
|
| + +---------+---------+---------+---------+---------+
|
| + Framework API | Toolbox | Toolbox | Toolbox | Carbon | Carbon |
|
| + +---------+---------+---------+---------+---------+
|
| +
|
| + +---------+---------+---------+---------+---------+
|
| + | ?(*) |Interface|Interface|CarbonLib|Mac OS X |
|
| + | |Lib |Lib | | |
|
| +* Files.h +---------+---------+---------+---------+---------+
|
| +PBGetFCBInfoSync() | o | 7.1- | 7.1- | 1.0- | o |
|
| +FSMakeFSSpec() | o | 7.1- | 7.1- | 1.0- | o |
|
| +FSGetForkCBInfo() | o | (**) | 9.0- | 1.0- | o |
|
| +FSpMakeFSRef() | o | (**) | 9.0- | 1.0- | o |
|
| +FSGetCatalogInfo() | o | (**) | 9.0- | 1.0- | -10.3 |
|
| +FSPathMakeRef() | x | x | x | 1.1- | -10.3 |
|
| + +---------+---------+---------+---------+---------+
|
| +
|
| + +---------+---------+---------+---------+---------+
|
| + | ?(*) |Font |Font |CarbonLib|Mac OS X |
|
| + | |Manager |Manager | | |
|
| +* Fonts.h +---------+---------+---------+---------+---------+
|
| +FMCreateFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 |
|
| +FMDisposeFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 |
|
| +FMGetNextFontFamily() | x | x | 9.0- | 1.0- | -10.3 |
|
| +FMGetFontFamilyName() | x | x | 9.0- | 1.0- | -10.3 |
|
| +FMCreateFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 |
|
| +FMDisposeFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 |
|
| +FMGetNextFontFamilyInstance() | x | x | 9.0- | 1.0- | -10.3 |
|
| + +---------+---------+---------+---------+---------+
|
| +
|
| + +---------+---------+---------+---------+---------+
|
| + | - | - | - |CarbonLib|Mac OS X |
|
| +* ATSFont.h (***) +---------+---------+---------+---------+---------+
|
| +ATSFontFindFromName() | x | x | x | x | o |
|
| +ATSFontGetFileSpecification() | x | x | x | x | o |
|
| + +---------+---------+---------+---------+---------+
|
| +
|
| + (*)
|
| + In the "Classic": the original binary executable
|
| + format, these framework functions are directly
|
| + transformed to MacOS system call. Therefore, the
|
| + exact availability should be checked by running
|
| + system.
|
| +
|
| + (**)
|
| + InterfaceLib is bundled to MacOS and its version
|
| + is usually equal to MacOS. There's no separate
|
| + update for InterfaceLib. It is supposed that
|
| + there's no InterfaceLib 9.x for m68k platforms.
|
| + In fact, these functions are FSRef dependent.
|
| +
|
| + (***)
|
| + ATSUI framework is available on ATSUnicode 8.5 on
|
| + ppc Toolbox CFM, CarbonLib 1.0 too. But its base:
|
| + ATS font manager is not published in these versions.
|
| +
|
| +------------------------------------------------------------
|
| +Last update: 2013-Nov-03.
|
| +
|
| +Currently maintained by
|
| + suzuki toshiya, <mpsuzuki@hiroshima-u.ac.jp>
|
| +Originally prepared by
|
| + Leonard Rosenthol, <leonardr@lazerware.com>
|
| + Just van Rossum, <just@letterror.com>
|
|
|