diff -Nru ttfautohint-0.96/.version ttfautohint-0.97/.version --- ttfautohint-0.96/.version 2013-08-06 19:43:25.000000000 +0000 +++ ttfautohint-0.97/.version 2013-11-09 07:51:05.000000000 +0000 @@ -1 +1 @@ -0.96 +0.97 diff -Nru ttfautohint-0.96/INSTALL ttfautohint-0.97/INSTALL --- ttfautohint-0.96/INSTALL 2013-03-07 10:53:23.000000000 +0000 +++ ttfautohint-0.97/INSTALL 2013-11-09 07:40:52.000000000 +0000 @@ -12,8 +12,8 @@ Basic Installation ================== - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following + Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented diff -Nru ttfautohint-0.96/Makefile.in ttfautohint-0.97/Makefile.in --- ttfautohint-0.96/Makefile.in 2013-08-06 19:28:48.000000000 +0000 +++ ttfautohint-0.97/Makefile.in 2013-11-09 07:48:26.000000000 +0000 @@ -470,6 +470,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LATEX = @LATEX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ @@ -522,7 +523,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANDOC = @PANDOC@ PATH_SEPARATOR = @PATH_SEPARATOR@ -PDFLATEX = @PDFLATEX@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ @@ -549,6 +549,7 @@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ diff -Nru ttfautohint-0.96/NEWS ttfautohint-0.97/NEWS --- ttfautohint-0.96/NEWS 2013-08-05 18:12:29.000000000 +0000 +++ ttfautohint-0.97/NEWS 2013-11-02 09:59:29.000000000 +0000 @@ -1,3 +1,18 @@ +New in 0.97: + +* Improved script support. Besides Cyrillic and Greek, which are now + handled separately from Latin, ttfautohint can handle Hebrew. + +* Option `-f' now takes a parameter to specify the fallback script. The + corresponding long option name has been renamed from `--latin-fallback' to + `--fallback-script'. + +* Work around a bug in display environments that use FreeType 2.5.0 and + earlier for rendering: Sometimes, the `strong' stem width routine was used + for DW ClearType (this is, subpixel hinting in FreeType is enabled) even + if `smooth' was selected while generating the font with ttfautohint. + + New in 0.96: * Option `--components' has been replaced with `--composites': By default, diff -Nru ttfautohint-0.96/README ttfautohint-0.97/README --- ttfautohint-0.96/README 2013-08-06 19:27:22.000000000 +0000 +++ ttfautohint-0.97/README 2013-11-09 07:38:39.000000000 +0000 @@ -1,4 +1,4 @@ -ttfautohint 0.96 +ttfautohint 0.97 ---------------- by Werner Lemberg diff -Nru ttfautohint-0.96/VERSION ttfautohint-0.97/VERSION --- ttfautohint-0.96/VERSION 2013-08-06 20:30:46.000000000 +0000 +++ ttfautohint-0.97/VERSION 2013-11-09 08:18:39.000000000 +0000 @@ -1 +1 @@ -0.96 +0.97 diff -Nru ttfautohint-0.96/config.h.in ttfautohint-0.97/config.h.in --- ttfautohint-0.96/config.h.in 2013-08-06 19:28:45.000000000 +0000 +++ ttfautohint-0.97/config.h.in 2013-11-09 07:48:23.000000000 +0000 @@ -535,27 +535,41 @@ 'reference to static identifier "f" in extern inline function'. This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. - Suppress the use of extern inline on Apple's platforms, as Libc at least - through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g., + Suppress the use of extern inline on problematic Apple configurations. + OS X 10.8 and earlier mishandle it; see, e.g., . + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . Perhaps Apple will fix this some day. */ +#if (defined __APPLE__ \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_APPLE_BUG +#endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !(defined __SUNPRO_C && __STDC__))) \ - && !defined __APPLE__) + && !defined _GL_EXTERN_INLINE_APPLE_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ - && !defined __APPLE__) -# if __GNUC_GNU_INLINE__ + && !defined _GL_EXTERN_INLINE_APPLE_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED diff -Nru ttfautohint-0.96/configure ttfautohint-0.97/configure --- ttfautohint-0.96/configure 2013-08-06 19:28:43.000000000 +0000 +++ ttfautohint-0.97/configure 2013-11-09 07:48:21.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ttfautohint 0.96. +# Generated by GNU Autoconf 2.69 for ttfautohint 0.97. # # Report bugs to . # @@ -650,8 +650,8 @@ # Identity of this package. PACKAGE_NAME='ttfautohint' PACKAGE_TARNAME='ttfautohint' -PACKAGE_VERSION='0.96' -PACKAGE_STRING='ttfautohint 0.96' +PACKAGE_VERSION='0.97' +PACKAGE_STRING='ttfautohint 0.97' PACKAGE_BUGREPORT='freetype-devel@nongnu.org' PACKAGE_URL='' @@ -706,7 +706,7 @@ LIBOBJS WITH_DOC_FALSE WITH_DOC_TRUE -PDFLATEX +LATEX PANDOC INKSCAPE IMPORT @@ -902,6 +902,7 @@ REPLACE_GETPAGESIZE REPLACE_GETGROUPS REPLACE_GETLOGIN_R +REPLACE_GETDTABLESIZE REPLACE_GETDOMAINNAME REPLACE_GETCWD REPLACE_FTRUNCATE @@ -1708,7 +1709,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ttfautohint 0.96 to adapt to many kinds of systems. +\`configure' configures ttfautohint 0.97 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1778,7 +1779,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ttfautohint 0.96:";; + short | recursive ) echo "Configuration of ttfautohint 0.97:";; esac cat <<\_ACEOF @@ -1904,7 +1905,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ttfautohint configure 0.96 +ttfautohint configure 0.97 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2773,7 +2774,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ttfautohint $as_me 0.96, which was +It was created by ttfautohint $as_me 0.97, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3650,7 +3651,7 @@ # Define the identity of the package. PACKAGE='ttfautohint' - VERSION='0.96' + VERSION='0.97' cat >>confdefs.h <<_ACEOF @@ -7990,6 +7991,7 @@ REPLACE_FTRUNCATE=0; REPLACE_GETCWD=0; REPLACE_GETDOMAINNAME=0; + REPLACE_GETDTABLESIZE=0; REPLACE_GETLOGIN_R=0; REPLACE_GETGROUPS=0; REPLACE_GETPAGESIZE=0; @@ -24284,7 +24286,7 @@ Report bugs to ." lt_cl_version="\ -ttfautohint config.lt 0.96 +ttfautohint config.lt 0.97 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -25882,15 +25884,17 @@ fi # PDF documentation - # Extract the first word of "pdflatex", so it can be a program name with args. -set dummy pdflatex; ac_word=$2 + for ac_prog in lualatex xelatex +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PDFLATEX+:} false; then : +if ${ac_cv_prog_LATEX+:} false; then : $as_echo_n "(cached) " >&6 else - if test -n "$PDFLATEX"; then - ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test. + if test -n "$LATEX"; then + ac_cv_prog_LATEX="$LATEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -25899,7 +25903,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_PDFLATEX="pdflatex" + ac_cv_prog_LATEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -25907,26 +25911,29 @@ done IFS=$as_save_IFS - test -z "$ac_cv_prog_PDFLATEX" && ac_cv_prog_PDFLATEX="no" fi fi -PDFLATEX=$ac_cv_prog_PDFLATEX -if test -n "$PDFLATEX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 -$as_echo "$PDFLATEX" >&6; } +LATEX=$ac_cv_prog_LATEX +if test -n "$LATEX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX" >&5 +$as_echo "$LATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi + test -n "$LATEX" && break +done +test -n "$LATEX" || LATEX="no" + if test x"$PDFLATEX" == x"no"; then if test -f "$pdf_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Need pdflatex to create documentation in PDF format" >&5 -$as_echo "$as_me: WARNING: Need pdflatex to create documentation in PDF format" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Need lualatex or xelatex to create documentation in PDF format" >&5 +$as_echo "$as_me: WARNING: Need lualatex or xelatex to create documentation in PDF format" >&2;} with_doc=no else - as_fn_error $? "Need pdflatex to create documentation in PDF format" "$LINENO" 5 + as_fn_error $? "Need lualatex or xelatex to create documentation in PDF format" "$LINENO" 5 fi fi fi @@ -26538,7 +26545,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ttfautohint $as_me 0.96, which was +This file was extended by ttfautohint $as_me 0.97, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -26604,7 +26611,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ttfautohint config.status 0.96 +ttfautohint config.status 0.97 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru ttfautohint-0.96/configure.ac ttfautohint-0.97/configure.ac --- ttfautohint-0.96/configure.ac 2013-08-06 11:58:21.000000000 +0000 +++ ttfautohint-0.97/configure.ac 2013-10-20 16:39:16.000000000 +0000 @@ -203,10 +203,10 @@ fi # PDF documentation - AC_CHECK_PROG([PDFLATEX], [pdflatex], [pdflatex], [no]) + AC_CHECK_PROGS([LATEX], [lualatex xelatex], [no]) if test x"$PDFLATEX" == x"no"; then TA_DOC([$pdf_file], - [Need pdflatex to create documentation in PDF format]) + [Need lualatex or xelatex to create documentation in PDF format]) fi fi diff -Nru ttfautohint-0.96/debian/changelog ttfautohint-0.97/debian/changelog --- ttfautohint-0.96/debian/changelog 2013-09-25 23:48:39.000000000 +0000 +++ ttfautohint-0.97/debian/changelog 2013-11-21 09:36:37.000000000 +0000 @@ -1,3 +1,9 @@ +ttfautohint (0.97-1) unstable; urgency=low + + * New upstream version. + + -- Gürkan Sengün Thu, 21 Nov 2013 10:36:19 +0100 + ttfautohint (0.96-1) unstable; urgency=low [ Gürkan Sengün ] diff -Nru ttfautohint-0.96/doc/Makefile.am ttfautohint-0.97/doc/Makefile.am --- ttfautohint-0.96/doc/Makefile.am 2013-07-24 23:14:01.000000000 +0000 +++ ttfautohint-0.97/doc/Makefile.am 2013-10-20 16:44:11.000000000 +0000 @@ -97,7 +97,7 @@ template.tex $(top_srcdir)/.version TEXINPUTS="$(srcdir);" \ $(PANDOC) --smart \ - --latex-engine=$(PDFLATEX) \ + --latex-engine=$(LATEX) \ --template=$(srcdir)/template.tex \ --default-image-extension=".pdf" \ --variable="version:$(VERSION)" \ diff -Nru ttfautohint-0.96/doc/Makefile.in ttfautohint-0.97/doc/Makefile.in --- ttfautohint-0.96/doc/Makefile.in 2013-08-06 19:28:48.000000000 +0000 +++ ttfautohint-0.97/doc/Makefile.in 2013-11-09 07:48:26.000000000 +0000 @@ -434,6 +434,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LATEX = @LATEX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ @@ -486,7 +487,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANDOC = @PANDOC@ PATH_SEPARATOR = @PATH_SEPARATOR@ -PDFLATEX = @PDFLATEX@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ @@ -513,6 +513,7 @@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ @@ -926,7 +927,7 @@ @WITH_DOC_TRUE@ template.tex $(top_srcdir)/.version @WITH_DOC_TRUE@ TEXINPUTS="$(srcdir);" \ @WITH_DOC_TRUE@ $(PANDOC) --smart \ -@WITH_DOC_TRUE@ --latex-engine=$(PDFLATEX) \ +@WITH_DOC_TRUE@ --latex-engine=$(LATEX) \ @WITH_DOC_TRUE@ --template=$(srcdir)/template.tex \ @WITH_DOC_TRUE@ --default-image-extension=".pdf" \ @WITH_DOC_TRUE@ --variable="version:$(VERSION)" \ Binary files /tmp/7l9chqyW8d/ttfautohint-0.96/doc/img/ttfautohintGUI.png and /tmp/UoZsW5D5HW/ttfautohint-0.97/doc/img/ttfautohintGUI.png differ diff -Nru ttfautohint-0.96/doc/make-snapshot.sh ttfautohint-0.97/doc/make-snapshot.sh --- ttfautohint-0.96/doc/make-snapshot.sh 2013-01-19 17:14:34.000000000 +0000 +++ ttfautohint-0.97/doc/make-snapshot.sh 2013-10-15 10:07:27.000000000 +0000 @@ -25,7 +25,7 @@ # already run, since firefox replaces the process with a new window of the # already running instance. # -# o It loops forever for programs like `k3b' which spawns itself, thus +# o It loops forever for programs like `k3b' that spawns itself, thus # having a different process ID for the visible window. diff -Nru ttfautohint-0.96/doc/template.tex ttfautohint-0.97/doc/template.tex --- ttfautohint-0.96/doc/template.tex 2013-07-24 22:42:24.000000000 +0000 +++ ttfautohint-0.97/doc/template.tex 2013-10-20 15:50:11.000000000 +0000 @@ -1,10 +1,12 @@ +% This template only works with luatex or XeTeX if you use non-ASCII +% characters. + \documentclass[$if(fontsize)$$fontsize$,$endif$% $if(lang)$$lang$,$endif$% DIV=13]{scrreprt} \usepackage{ifxetex,ifluatex} \usepackage[T1]{fontenc} -\usepackage[utf8]{inputenc} \usepackage{fixltx2e} \usepackage{libertine} @@ -41,7 +43,7 @@ $if(tables)$ \usepackage{longtable} -% We redefine the main `longtable' macro to suppress the ugly \medskip which +% We redefine the main `longtable' macro to suppress the ugly \medskip that % pandoc inserts between rows. % % We also don't want line breaks after horizontal lines. This is quite diff -Nru ttfautohint-0.96/doc/ttfautohint-1.pandoc ttfautohint-0.97/doc/ttfautohint-1.pandoc --- ttfautohint-0.96/doc/ttfautohint-1.pandoc 2013-08-05 18:26:02.000000000 +0000 +++ ttfautohint-0.97/doc/ttfautohint-1.pandoc 2013-11-06 11:58:33.000000000 +0000 @@ -19,11 +19,11 @@ Introduction ============ -**ttfautohint** is a library written in\ C which takes a TrueType font as +**ttfautohint** is a library written in\ C that takes a TrueType font as the input, removes its bytecode instructions (if any), and returns a new font where all glyphs are bytecode hinted using the information given by FreeType's autohinting module. The idea is to provide the excellent quality -of the autohinter on platforms which don't use FreeType. +of the autohinter on platforms that don't use FreeType. The library has a single API function, `TTF_autohint`, which is described [below](#the-ttfautohint-api). @@ -64,7 +64,7 @@ the rasterizer. More sophisticated rasterizers are able to produce better rendering results. - This is how Type\ 1 and CFF font hints work. + This is how Type\ 1 and CFF hints work. 2. The font contains exact instructions (also called *bytecode*) on how to move the points of its outlines, depending on the resolution of the @@ -88,7 +88,7 @@ ---------------------------------------------- While it is relatively easy to specify PostScript hints (either manually or -by an auto-hinter which works at font creation time), creating TrueType +by an auto-hinter that works at font creation time), creating TrueType hints is far more difficult. There are at least two reasons: - TrueType instructions form a programming language, operating at a very @@ -122,7 +122,7 @@ ---------------- The ttfautohint library brings the excellent quality of FreeType rendering -to platforms which don't use FreeType, yet require hinting for text to look +to platforms that don't use FreeType, yet require hinting for text to look good -- like Microsoft Windows. Roughly speaking, it converts the glyph analysis done by FreeType's auto-hinting module to TrueType bytecode. Internally, the auto-hinter's algorithm resembles PostScript hinting @@ -177,7 +177,7 @@ A typical call looks like the following. ``` - ttfautohint -v -f foo.ttf foo-autohinted.ttf + ttfautohint -v -f latn foo.ttf foo-autohinted.ttf ``` For demonstration purposes, here the same using a pipe and redirection. @@ -185,7 +185,7 @@ support piping with binary files, unfortunately. ``` - cat foo.ttf | ttfautohint -v -f > foo-autohinted.ttf + cat foo.ttf | ttfautohint -v -f latn > foo-autohinted.ttf ``` @@ -230,17 +230,18 @@ ### Fallback Script -`--latin-fallback`, `-f` -: Set fallback script to 'latin', this is, use the 'latin' auto-hinting - module instead of 'none' for all glyphs which can't be assigned to a - script. See [below](#scripts) for more details. +`--fallback-script=`*s*, `-f`\ *s* +: Set fallback script to tag *s*, which is a string consisting of four + characters like `latn` or `dflt`. It gets used for for all glyphs that + can't be assigned to a script automatically. See [below](#scripts) for + more details. ### Hinting Limit `--hinting-limit=`*n*, `-G`\ *n* : The *hinting limit* is the PPEM value (in pixels) where hinting gets switched off (using the `INSTCTRL` bytecode instruction); it has zero - impact on the file size. The default value for *n* is 200 which means + impact on the file size. The default value for *n* is 200, which means that the font is not hinted for PPEM values larger than 200. Note that hinting in the range 'hinting-range-max' up to 'hinting-limit' @@ -289,7 +290,7 @@ or *value2* (or both) can be missing; a missing value is replaced by the beginning or end of the whole interval of valid PPEM values, respectively (6\ to 32767). Whitespace is not significant; superfluous - commas are ignored, and ranges must be specified in increasing order. + commas are ignored, and ranges must be specified in increasing order. For example, the string `"7-9, 11, 13-"` means the values 7, 8, 9, 11, 13, 14, 15, etc. Consequently, if the supplied argument is `"-"`, no x-height snapping takes place at all. The default is the empty string @@ -332,12 +333,12 @@ baseline-to-baseline distance used by TeX and other sophisticated text processing applications, namely 1.2×designsize, which gives satisfying results in most cases. It is also near to the factor 1.25 recommended - in the abovementioned How-To. For example, if the vertical extension of + in the abovementioned how-to. For example, if the vertical extension of the largest glyph is 2000 units (assuming that it approximately represents the designsize), the sum of `usWinAscent` and `usWinDescent` could be 1.25×2000 = 2500. - In case ttfautohint is used as an auto-hinting tool for fonts which can + In case ttfautohint is used as an auto-hinting tool for fonts that can be no longer modified to change the metrics, option `-W` in combination with '`-X "-"`' to suppress any vertical enlargement should prevent almost all clipping. @@ -347,7 +348,7 @@ `--pre-hinting`, `-p` : *Pre-hinting* means that a font's original bytecode is applied to all glyphs before it is replaced with bytecode created by ttfautohint. - This makes only sense if your font already has some hints in it which + This makes only sense if your font already has some hints in it that modify the shape even at EM size (normally 2048px); for example, some CJK fonts need this because the bytecode is used to scale and shift subglyphs. For most fonts, however, this is not the case. @@ -361,17 +362,19 @@ bytecode size a lot, however, it might yield better hinting results. If this option is used (and a font actually contains composite glyphs), - ttfautohint cannot reprocess its own output for technical reasons, see - [below](#the-.ttfautohint-glyph). + ttfautohint currently cannot reprocess its own output for technical + reasons, see [below](#the-.ttfautohint-glyph). ### Symbol Font `--symbol`, `-s` -: Use default values for standard (horizontal) stem width and height - instead of deriving them from latin character 'o'. Use this option - (usually in combination with option `--latin-fallback`) to hint symbol - or dingbat fonts or math glyphs, for example, which lack character 'o', - at the expense of possibly poor hinting results at small sizes. +: Apply default values for standard (horizontal) stem width and height + instead of deriving them from a script-specific, hard-coded default + character (which usually resembles the shape of a lowercase 'o'). Use + this option (usually in combination with option `--fallback-script`) to + hint symbol or dingbat fonts or math glyphs, for example, that lack a + default character, at the expense of possibly poor hinting results at + small sizes. ### Dehint @@ -394,7 +397,7 @@ `--strong-stem-width=`*string*, `-w`\ *string* : ttfautohint offers two different routines to handle (horizontal) stem widths and stem positions: 'smooth' and 'strong'. The former uses - discrete values which slightly increase the stem contrast with almost no + discrete values that slightly increase the stem contrast with almost no distortion of the outlines, while the latter snaps both stem widths and stem positions to integer pixel values as much as possible, yielding a crisper appearance at the cost of much more distortion. @@ -422,14 +425,16 @@ The command line option expects *string* to contain up to three letters with possible values '`g`' for grayscale, '`G`' for GDI ClearType, and '`D`' for DW ClearType. If a letter is found in *string*, the strong - stem width routine is used for the corresponding rendering target. The - default value is '`G`' which means that strong stem width handling is - activated for GDI ClearType only. To use smooth stem width handling for - all three rendering targets, use the empty string as an argument, - usually connoted with '`""`'. - - In the GUI, simply set the corresponding check box to select the stem - width routine for a given rendering target. + stem width routine is used for the corresponding rendering target (and + smooth stem width handling otherwise). The default value is '`G`', which + means that strong stem width handling is activated for GDI ClearType + only. To use smooth stem width handling for all three rendering + targets, use the empty string as an argument, usually connoted with + '`""`'. + + In the GUI, simply set the corresponding check box to select the strong + width routine for a given rendering target. If you unset the check box, + the smooth width routine gets used. The following FontForge snapshot images use the font ['Mertz Bold'](http://code.newtypography.co.uk/mertz-sans/) (still under @@ -445,7 +450,7 @@ ### Font License Restrictions `--ignore-restrictions`, `-i` -: By default, fonts which have bit\ 1 set in the 'fsType' field of the +: By default, fonts that have bit\ 1 set in the 'fsType' field of the `OS/2` table are rejected. If you have a permission of the font's legal owner to modify the font, specify this command line option. @@ -474,7 +479,7 @@ [Real-Time Grid Fitting of Typographic Outlines](http://www.tug.org/TUGboat/tb24-3/lemberg.pdf) is a scholarly -paper which describes FreeType's auto-hinter in some detail. Regarding the +paper that describes FreeType's auto-hinter in some detail. Regarding the described data structures it is slightly out of date, but the algorithm itself hasn't changed. @@ -523,7 +528,7 @@ appearance. + Compute standard stem widths and heights of the font. The values - are normally taken from the glyph of letter 'o'. + are normally taken from a glyph that resembles letter 'o'. + Compute blue zones, see [below](#blue-zones). @@ -531,6 +536,17 @@ if ttfautohint fails to find proper blue zones, hinting becomes quite poor, leading even to severe shape distortions. + +Table: script-specific standard characters of the 'latin' module + + script standard character + -------- -------------------- + `cyrl` 'о', U+043E, CYRILLIC SMALL LETTER O + `grek` 'ο', U+03BF, GREEK SMALL LETTER OMICRON + `hebr` 'ם', U+05DD, HEBREW LETTER FINAL MEM + `latn` 'o', U+006F, LATIN SMALL LETTER O + + * Glyph Analysis This is a per-glyph operation. @@ -546,14 +562,19 @@ ---------- ![Two blue zones relevant to the glyph 'a'. Vertical point coordinates of - *all* glyphs within these zones are aligned.](img/blue-zones) + *all* glyphs within these zones are aligned, provided the blue zone is + active (this is, its vertical size is smaller than + 3/4\ pixels).](img/blue-zones) Outlines of certain characters are used to determine *blue zones*. This -concept is the same as with Type\ 1 fonts: All glyph points which lie in +concept is the same as with Type\ 1 fonts: All glyph points that lie in certain small horizontal zones get aligned vertically. -Here a table which shows the characters used by the latin module; the values -are hard-coded in the source code. +Here a series of tables that show the blue zone characters of the latin +module's available scripts; the values are hard-coded in the source code. + + +Table: `latn` blue zones ID Blue zone Characters ---- ----------- ------------ @@ -564,11 +585,45 @@ 5 bottom of small letters xzroesc 6 bottom of descenders of small letters pqgjy + The 'round' characters (e.g. 'OCQS') from Zones 1, 2, and 5 are also used to control the overshoot handling; to improve rendering at small sizes, zone\ 4 gets adjusted to be on the pixel grid; cf. the [`--increase-x-height` option](#x-height-increase-limit). + +Table: `grek` blue zones + + ID Blue zone Characters + ---- ----------- ------------ + 1 top of capital letters ΓΒΕΖΘΟΩ + 2 bottom of capital letters ΒΔΖΞΘΟ + 3 top of 'small beta' like letters βθδζλξ + 4 top of small letters αειοπστω + 5 bottom of small letters αειοπστω + 6 bottom of descenders of small letters βγημρφχψ + + +Table: `cyrl` blue zones + + ID Blue zone Characters + ---- ----------- ------------ + 1 top of capital letters БВЕПЗОСЭ + 2 bottom of capital letters БВЕШЗОСЭ + 3 top of small letters хпншезос + 4 bottom of small letters хпншезос + 5 bottom of descenders of small letters руф + + +Table: `hebr` blue zones + + ID Blue zone Characters + ---- ----------- ------------ + 1 top of letters בדהחךכםס + 2 bottom of letters בטכםסצ + 3 bottom of descenders of letters קךןףץ + + ![This image shows the relevant glyph terms for vertical blue zone positions.](img/glyph-terms) @@ -578,10 +633,10 @@ Aligning outlines along the grid lines is called *grid fitting*. It doesn't necessarily mean that the outlines are positioned *exactly* on the grid, -however, especially if you want a smooth appearance at different sizes. +however, especially if you want a smooth appearance at different sizes. This is the central routine of the auto-hinter; its actions are highly -dependent on the used script. Currently, only support for scripts which -work similarly to Latin (i.e. Greek and Cyrillic) is available. +dependent on the used script. Currently, only support for scripts that work +similarly to Latin (e.g. Greek or Cyrillic) is available. * Align edges linked to blue zones. @@ -663,7 +718,7 @@ An example. Let's assume that we have a hinting range 10\ <= ppem <=\ 100, and the hinting limit is set to 250. For a given glyph, ttfautohint finds -out that four hint sets must be computed to exactly cover thes hinting +out that four hint sets must be computed to exactly cover this hinting range: 10-15, 16-40, 41-80, and 81-100. For ppem values below 10ppem, the hint set covering 10-15ppem is used, for ppem values larger than 100 the hint set covering 81-100ppem is used. For ppem values larger than 250, no @@ -690,7 +745,7 @@ are within a composite glyph. The final bytecode of the composite glyph eventually decrements this variable again. -As an example, let's consider composite glyph 'Agrave' ('À') which has the +As an example, let's consider composite glyph 'Agrave' ('À'), which has the subglyph 'A' as the base and 'grave' as its accent. After processing with ttfautohint it consists of three components: '\.ttfautohint', 'A', and 'grave' (in this order). @@ -714,7 +769,7 @@ the font! Under normal circumstances this never happens because '\.ttfautohint' doesn't have an entry in the font's `cmap` table. (However, some test and demo programs like FreeType's `ftview` application or other -glyph viewers which are able to bypass the `cmap` table might be affected.) +glyph viewers that are able to bypass the `cmap` table might be affected.) Scripts @@ -723,10 +778,19 @@ ttfautohint checks which auto-hinting module should be used to hint a specific glyph. To do so, it checks a glyph's Unicode character code whether it belongs to a given script. Currently, only FreeType's 'latin' -autohinting module is implemented, but more are expected to come. Here is -the hardcoded list of character ranges which are hinted by this 'latin' -module. As you can see, this also covers some non-latin scripts (in the -Unicode sense) which have similar typographical properties. +autohinting module is implemented, but more are expected to come. Note, +however, that this module is capable to hint other scripts too. + +Here is the hardcoded list of character ranges that are hinted by this +'latin' module. As you can see, this also covers some non-latin scripts (in +the Unicode sense) that have similar typographical properties. + +In ttfautohint, scripts are identified by four-character tags. The value +`dflt` indicates 'no script', which gets hinted by 'dummy' auto-hinting +module. + + +Table: `latn` character ranges Character range Description --------------------- ------------- @@ -737,35 +801,56 @@ `0x0250` - `0x02AF` IPA Extensions `0x02B0` - `0x02FF` Spacing Modifier Letters `0x0300` - `0x036F` Combining Diacritical Marks - `0x0370` - `0x03FF` Greek and Coptic - `0x0400` - `0x04FF` Cyrillic - `0x0500` - `0x052F` Cyrillic Supplement `0x1D00` - `0x1D7F` Phonetic Extensions `0x1D80` - `0x1DBF` Phonetic Extensions Supplement `0x1DC0` - `0x1DFF` Combining Diacritical Marks Supplement `0x1E00` - `0x1EFF` Latin Extended Additional - `0x1F00` - `0x1FFF` Greek Extended `0x2000` - `0x206F` General Punctuation `0x2070` - `0x209F` Superscripts and Subscripts `0x20A0` - `0x20CF` Currency Symbols `0x2150` - `0x218F` Number Forms `0x2460` - `0x24FF` Enclosed Alphanumerics `0x2C60` - `0x2C7F` Latin Extended-C - `0x2DE0` - `0x2DFF` Cyrillic Extended-A `0x2E00` - `0x2E7F` Supplemental Punctuation - `0xA640` - `0xA69F` Cyrillic Extended-B `0xA720` - `0xA7FF` Latin Extended-D `0xFB00` - `0xFB06` Alphabetical Presentation Forms (Latin Ligatures) `0x1D400` - `0x1D7FF` Mathematical Alphanumeric Symbols `0x1F100` - `0x1F1FF` Enclosed Alphanumeric Supplement + +Table: `grek` character ranges + + Character range Description + --------------------- ------------- + `0x0370` - `0x03FF` Greek and Coptic + `0x1F00` - `0x1FFF` Greek Extended + + +Table: `cyrl` character ranges + + Character range Description + --------------------- ------------- + `0x0400` - `0x04FF` Cyrillic + `0x0500` - `0x052F` Cyrillic Supplement + `0x2DE0` - `0x2DFF` Cyrillic Extended-A + `0xA640` - `0xA69F` Cyrillic Extended-B + + +Table: `hebr` character ranges + + Character range Description + --------------------- ------------- + `0x0590` - `0x05FF` Hebrew + `0xFB1D` - `0xFB4F` Alphabetic Presentation Forms (Hebrew) + + If a glyph's character code is not covered by a script range, it is not -hinted (or rather, it gets hinted by the 'dummy' auto-hinting module which +hinted (or rather, it gets hinted by the 'dummy' auto-hinting module that essentially does nothing). This can be changed by specifying a *fallback -script* with [option `--latin-fallback`](#fallback-script). +script* with [option `--fallback-script`](#fallback-script). It is planned to extend ttfautohint so that the `GSUB` OpenType table gets -analyzed, mapping character codes to all glyph indices which can be reached +analyzed, mapping character codes to all glyph indices that can be reached by switching on or off various OpenType features. @@ -793,7 +878,7 @@ ttfautohint can't digitally sign a font; you have to do that afterwards. * `name`: The 'version' entries are modified to add information about the - parameters which have been used for calling ttfautohint. This can be + parameters that have been used for calling ttfautohint. This can be controlled with the [`--no-info`](#add-ttfautohint-info) option. * `GPOS`, `hmtx`, `loca`, `head`, `maxp`, `post`: Updated to fit the @@ -803,7 +888,7 @@ * `LTSH`, `hdmx`: Since ttfautohint doesn't do any horizontal hinting, those tables are superfluous and thus removed. - * `VDMX`: Removed, since it depends on the original bytecode which + * `VDMX`: Removed, since it depends on the original bytecode, which ttfautohint removes. A font editor might recompute the necessary data later on. diff -Nru ttfautohint-0.96/doc/ttfautohint-2.pandoc ttfautohint-0.97/doc/ttfautohint-2.pandoc --- ttfautohint-0.96/doc/ttfautohint-2.pandoc 2013-08-06 19:44:08.000000000 +0000 +++ ttfautohint-0.97/doc/ttfautohint-2.pandoc 2013-11-09 07:51:50.000000000 +0000 @@ -43,7 +43,7 @@ `TA_Err_Canceled`. Use this for a 'Cancel' button or similar features in interactive use. -*progress_data* is a void pointer to user supplied data. +*progress_data* is a void pointer to user-supplied data. ```C typedef int @@ -71,7 +71,7 @@ reallocate the data if necessary, ensuring that the string length doesn't exceed 0xFFFF. -*info_data* is a void pointer to user supplied data. +*info_data* is a void pointer to user-supplied data. If an error occurs, return a non-zero value and don't modify *str* and *str_len* (such errors are handled as non-fatal). @@ -100,7 +100,7 @@ whitespace within the format string is not significant, a trailing comma is ignored. Fields are parsed from left to right; if a field occurs multiple times, the last field's argument wins. The same is true for -fields which are mutually exclusive. Depending on the field, zero or one +fields that are mutually exclusive. Depending on the field, zero or one argument is expected. Note that fields marked as 'not implemented yet' are subject to change. @@ -113,7 +113,7 @@ opened for binary reading. Mutually exclusive with `in-buffer`. `in-buffer` -: A pointer of type `const char*` to a buffer which contains the input +: A pointer of type `const char*` to a buffer that contains the input font. Needs `in-buffer-len`. Mutually exclusive with `in-file`. `in-buffer-len` @@ -125,7 +125,7 @@ opened for binary writing. Mutually exclusive with `out-buffer`. `out-buffer` -: A pointer of type `char**` to a buffer which contains the output +: A pointer of type `char**` to a buffer that contains the output font. Needs `out-buffer-len`. Mutually exclusive with `out-file`. Deallocate the memory with `free`. @@ -143,12 +143,12 @@ is not set or set to NULL, no progress callback function is used. `progress-callback-data` -: A pointer of type `void*` to user data which is passed to the +: A pointer of type `void*` to user data that is passed to the progress callback function. `error-string` : A pointer of type `unsigned char**` to a string (in UTF-8 encoding) - which verbally describes the error code. You must not change the + that verbally describes the error code. You must not change the returned value. `info-callback` @@ -158,7 +158,7 @@ set to NULL, the table data stays unmodified. `info-callback-data` -: A pointer of type `void*` to user data which is passed to the info +: A pointer of type `void*` to user data that is passed to the info callback function. `debug` @@ -181,20 +181,20 @@ `hinting-limit` : An integer (which must be larger than or equal to the value of - `hinting-range-max`) which gives the largest PPEM value at which + `hinting-range-max`) that gives the largest PPEM value at which hinting is applied. For larger values, hinting is switched off. If this field is not set, it defaults to `TA_HINTING_LIMIT`. If it is set to\ 0, no hinting limit is added to the bytecode. `hint-composites` : If this integer is set to\ 1, composite glyphs get separate hints. - This implies adding a special glyph to the font, as documented - [here](#the-.ttfautohint-glyph). Setting it to\ 0 (which is the - default), the hints of the composite glyphs' components are used. - Adding hints for composite glyphs increases the size of the resulting - bytecode a lot, but it might deliver better hinting results. - However, this depends on the processed font and must be checked by - inspection. + This implies adding a special glyph to the font called + ['.ttfautohint'](#the-.ttfautohint-glyph). Setting it to\ 0 (which + is the default), the hints of the composite glyphs' components are + used. Adding hints for composite glyphs increases the size of the + resulting bytecode a lot, but it might deliver better hinting + results. However, this depends on the processed font and must be + checked by inspection. `pre-hinting` : An integer (1\ for 'on' and 0\ for 'off', which is the default) to @@ -208,19 +208,19 @@ ### Hinting Algorithms `gray-strong-stem-width` -: An integer (1\ for 'on' and 0\ for 'off', which is the default) which +: An integer (1\ for 'on' and 0\ for 'off', which is the default) that specifies whether horizontal stems should be snapped and positioned to integer pixel values for normal grayscale rendering. `gdi-cleartype-strong-stem-width` -: An integer (1\ for 'on', which is the default, and 0\ for 'off') which +: An integer (1\ for 'on', which is the default, and 0\ for 'off') that specifies whether horizontal stems should be snapped and positioned to integer pixel values for GDI ClearType rendering, this is, the rasterizer version (as returned by the GETINFO bytecode instruction) is in the range 36\ <= version <\ 38 and ClearType is enabled. `dw-cleartype-strong-stem-width` -: An integer (1\ for 'on' and 0\ for 'off', which is the default) which +: An integer (1\ for 'on' and 0\ for 'off', which is the default) that specifies whether horizontal stems should be snapped and positioned to integer pixel values for DW ClearType rendering, this is, the rasterizer version (as returned by the GETINFO bytecode instruction) @@ -235,7 +235,7 @@ this flag to improve the legibility of small font sizes if necessary. `x-height-snapping-exceptions` -: A pointer of type `const char*` to a null-terminated string which +: A pointer of type `const char*` to a null-terminated string that gives a list of comma separated PPEM values or value ranges at which no x-height snapping shall be applied. A value range has the form *value1*`-`*value2*, meaning *value1* <= PPEM <= *value2*. *value1* @@ -259,13 +259,14 @@ ### Scripts `fallback-script` -: An integer which specifies the default script for glyphs not in the - 'latin' range. If set to\ 1, the 'latin' script is used (other - scripts are not supported yet). By default, no script is used - (value\ 0; this disables autohinting for such glyphs). +: A string consisting of four lowercase characters that specifies the + default script for glyphs which can't be mapped to a script + automatically. If set to `"dflt"` (which is the default), no script + is used. Valid values can be found in the header file + `ttfautohint-scripts.h`. `symbol` -: Set this integer to\ 1 if you want to process a font which lacks the +: Set this integer to\ 1 if you want to process a font that lacks the characters of a supported script, for example, a symbol font. ttfautohint then uses default values for the standard stem width and height instead of deriving these values from a script's key character @@ -303,10 +304,10 @@ for standard hinting, and symmetric grid-fitting and symmetric smoothing for horizontal subpixel hinting (ClearType). - * ttfautohint can't process a font a second time (well, it can, if the - font doesn't contain composite glyphs). Just think of ttfautohint as - being a compiler, a tool which also can't process its created output - again. + * ttfautohint can process its own output a second time only if option + `hint-composites` is not set (or if the font doesn't contain + composite glyphs at all). This limitation might change in the + future. ```C TA_Error diff -Nru ttfautohint-0.96/doc/ttfautohint-css.html ttfautohint-0.97/doc/ttfautohint-css.html --- ttfautohint-0.96/doc/ttfautohint-css.html 2013-01-19 16:50:45.000000000 +0000 +++ ttfautohint-0.97/doc/ttfautohint-css.html 2013-10-19 08:17:48.000000000 +0000 @@ -133,6 +133,7 @@ /* a horizontal rule between table head and body */ border-bottom: solid thin; } th { + font-weight: normal; padding-left: 0.8em; padding-right: 0.8em; /* some vertical space before the horizontal rule */ @@ -140,6 +141,9 @@ tbody tr:first-child td { /* some vertical space after the horizontal rule */ padding-top: 1ex; } + caption { + font-weight: bold; + padding-bottom: 2ex; } /* if we have paragraphs in definition lists, */ /* suppress the very first vertical space */ diff -Nru ttfautohint-0.96/doc/ttfautohint.html ttfautohint-0.97/doc/ttfautohint.html --- ttfautohint-0.96/doc/ttfautohint.html 2013-08-06 19:44:11.000000000 +0000 +++ ttfautohint-0.97/doc/ttfautohint.html 2013-11-09 07:51:59.000000000 +0000 @@ -13,7 +13,7 @@ + content="0.97" /> ttfautohint @@ -152,6 +152,7 @@ /* a horizontal rule between table head and body */ border-bottom: solid thin; } th { + font-weight: normal; padding-left: 0.8em; padding-right: 0.8em; /* some vertical space before the horizontal rule */ @@ -159,6 +160,9 @@ tbody tr:first-child td { /* some vertical space after the horizontal rule */ padding-top: 1ex; } + caption { + font-weight: bold; + padding-bottom: 2ex; } /* if we have paragraphs in definition lists, */ /* suppress the very first vertical space */ @@ -229,7 +233,7 @@