2014-06-13 23 views
1

因此,我們有一位使用花哨字體家族(Frutiger具體)的設計師,當我們爲客戶端設計網站時,我們遇到了問題,設計師忘了發送字體,所以我們發回郵件併發送一個zip文件。然而,設計者在mac上使用了一個mac字體(驚喜)。我們需要在網站上包含跨平臺字體。如何將分割的Appledouble字體轉換爲跨平臺字體類型

打開zip文件後,我們的mac開發人員可以看到字體,但不能看到字體文件。在打開ZIP文件,我們的Windows開發者看到以下 :

- ._MACOSX 
    + Frutiger 
     * FrutiBla(this is a file with size) 
     * FrutiBlaIta(this is a file with size) 
     * FrutiBol(this is a file with size) 
     * Frutiger(this is a file with size) 
     * FrutiIta(this is a file with size) 
     * FrutiLig(this is a file with size) 
     * FrutiLigIta(this is a file with size) 
     * FrutiRom(this is a file with size) 
     * FrutiUtiBla(this is a file with size) 
    + Frutiger Black 
     * FrutiBla(this is a file with size) 
     * FrutiBlaIta(this is a file with size) 
     * Fruti Black(this is a file with size) 
    + Frutiger Bold 
     * FrutiBol(this is a file with size) 
     * FrutiBolIta(this is a file with size) 
    + Frutiger Condensed 
     * FrutiBlaCn(this is a file with size) 
     * FrutiBolCn(this is a file with size) 
     * FrutiExtBlaCn(this is a file with size) 
     * Frutiger Condensed(this is a file with size) 
     * FrutiLigCn(this is a file with size) 
    + Frutiger Italic 
     * Frutiger Italic(this is a file with size) 
     * FrutigerIta(this is a file with size) 
    - Frutiger 
    + FrutiBla(this is a file) 
    + FrutiBlaIta(this is a file) 
    + FrutiBol(this is a file) 
    + Frutiger(this is a file) 
    + FrutiIta(this is a file) 
    + FrutiLig(this is a file) 
    + FrutiLigIta(this is a file) 
    + FrutiRom(this is a file) 
    + FrutiUtiBla(this is a file) 
    - Frutiger Black 
    + FrutiBla(this is a file) 
    + FrutiBlaIta(this is a file) 
    + Fruti Black(this is a file) 
    - Frutiger Bold 
    + FrutiBol(this is a file) 
    + FrutiBolIta(this is a file) 
    - Frutiger Condensed 
    + FrutiBlaCn(this is a file) 
    + FrutiBolCn(this is a file) 
    + FrutiExtBlaCn(this is a file) 
    + Frutiger Condensed(this is a file) 
    + FrutiLigCn(this is a file) 
    - Frutiger Italic 
    + Frutiger Italic(this is a file) 
    + FrutigerIta(this is a file) 

APON挖我出土稱爲TrIDNET一個文件類型標識符,在選擇這些文件,將採取它,並告訴我,這是一個「蘋果的AppleDouble編碼「類型的文件:

http://i1289.photobucket.com/albums/b501/kjc_igd/Capture_zps09ff80fc.png

所以我嘗試fontforge,它不能識別它:

http://i1289.photobucket.com/albums/b501/kjc_igd/Capture2_zpsb0eed013.png

嘗試在線轉換器。他們只用了一個文件在同一時間(這最終被半我猜的文件。

試圖DFontSplitter但沒有.dfont文件用,只有上述

,所以我安裝了Cygwin所示的文件層次合作(談的童車安裝),並下載的Fondu GnuZip文件,並在提取出的Cygwin它,然後用它的./configure

$ cd /fondu 
$ ./configure 
    checking for gcc... gcc 
    checking for C compiler default output... a.exe 
    checking whether the C compiler works... yes 
    checking whether we are cross compiling... no 
    checking for suffix of executables... .exe 
    checking for suffix of object files... o 
    checking whether we are using the GNU C compiler... yes 
    checking whether gcc accepts -g... yes 
    checking build system type... i686-pc-cygwin 
    checking host system type... i686-pc-cygwin 
    configure: creating ./config.status 
    config.status: creating Makefile 

./config.status是下面的代碼量笨重:

#! /bin/sh 
# Generated by configure. 
# Run this file to recreate the current configuration. 
# Compiler output produced by configure, useful for debugging 
# configure, is in config.log if it exists. 

debug=false 
SHELL=${CONFIG_SHELL-/bin/sh} 

## --------------------- ## 
## M4sh Initialization. ## 
## --------------------- ## 

# Be Bourne compatible 
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 
    emulate sh 
    NULLCMD=: 
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then 
    set -o posix 
fi 

# NLS nuisances. 
# Support unset when possible. 
if (FOO=FOO; unset FOO) >/dev/null 2>&1; then 
    as_unset=unset 
else 
    as_unset=false 
fi 

(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && 
    { $as_unset LANG || test "${LANG+set}" != set; } || 
     { LANG=C; export LANG; } 
(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && 
    { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || 
     { LC_ALL=C; export LC_ALL; } 
(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && 
    { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || 
     { LC_TIME=C; export LC_TIME; } 
(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && 
    { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || 
     { LC_CTYPE=C; export LC_CTYPE; } 
(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && 
    { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || 
     { LANGUAGE=C; export LANGUAGE; } 
(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && 
    { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || 
     { LC_COLLATE=C; export LC_COLLATE; } 
(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && 
    { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || 
     { LC_NUMERIC=C; export LC_NUMERIC; } 
(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && 
    { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || 
     { LC_MESSAGES=C; export LC_MESSAGES; } 


# Name of the executable. 
as_me=`(basename "$0") 2>/dev/null || 
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 
    X"$0" : 'X\(//\)$' \| \ 
    X"$0" : 'X\(/\)$' \| \ 
    .  : '\(.\)' 2>/dev/null || 
echo X/"$0" | 
    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } 
     /^X\/\(\/\/\)$/{ s//\1/; q; } 
     /^X\/\(\/\).*/{ s//\1/; q; } 
     s/.*/./; q'` 

# PATH needs CR, and LINENO needs CR and PATH. 
# Avoid depending upon Character Ranges. 
as_cr_letters='abcdefghijklmnopqrstuvwxyz' 
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
as_cr_Letters=$as_cr_letters$as_cr_LETTERS 
as_cr_digits='' 
as_cr_alnum=$as_cr_Letters$as_cr_digits 

# The user is always right. 
if test "${PATH_SEPARATOR+set}" != set; then 
    echo "#! /bin/sh" >conftest.sh 
    echo "exit 0" >>conftest.sh 
    chmod +x conftest.sh 
    if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then 
    PATH_SEPARATOR=';' 
    else 
    PATH_SEPARATOR=: 
    fi 
    rm -f conftest.sh 
fi 


    as_lineno_1=$LINENO 
    as_lineno_2=$LINENO 
    as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` 
    test "x$as_lineno_1" != "x$as_lineno_2" && 
    test "x$as_lineno_3" = "x$as_lineno_2" || { 
    # Find who we are. Look in the path if we contain no path at all 
    # relative or not. 
    case $0 in 
    *[\\/]*) as_myself=$0 ;; 
    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 
for as_dir in $PATH 
do 
    IFS=$as_save_IFS 
    test -z "$as_dir" && as_dir=. 
    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break 
done 

     ;; 
    esac 
    # We did not find ourselves, most probably we were run as `sh COMMAND' 
    # in which case we are not to be found in the path. 
    if test "x$as_myself" = x; then 
    as_myself=$0 
    fi 
    if test ! -f "$as_myself"; then 
    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 
echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} 
    { (exit 1); exit 1; }; } 
    fi 
    case $CONFIG_SHELL in 
    '') 
    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH 
do 
    IFS=$as_save_IFS 
    test -z "$as_dir" && as_dir=. 
    for as_base in sh bash ksh sh5; do 
    case $as_dir in 
    /*) 
     if ("$as_dir/$as_base" -c ' 
    as_lineno_1=$LINENO 
    as_lineno_2=$LINENO 
    as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` 
    test "x$as_lineno_1" != "x$as_lineno_2" && 
    test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then 
     CONFIG_SHELL=$as_dir/$as_base 
     export CONFIG_SHELL 
     exec "$CONFIG_SHELL" "$0" ${1+"[email protected]"} 
     fi;; 
    esac 
     done 
done 
;; 
    esac 

    # Create $as_me.lineno as a copy of $as_myself, but with $LINENO 
    # uniformly replaced by the line number. The first 'sed' inserts a 
    # line-number line before each line; the second 'sed' does the real 
    # work. The second script uses 'N' to pair each line-number line 
    # with the numbered line, and appends trailing '-' during 
    # substitution so that $LINENO is not a special case at line end. 
    # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the 
    # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) 
    sed '=' <$as_myself | 
    sed ' 
     N 
     s,$,-, 
     : loop 
     s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, 
     t loop 
     s,-$,, 
     s,^['$as_cr_digits']*\n,, 
    ' >$as_me.lineno && 
    chmod +x $as_me.lineno || 
    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 
echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} 
    { (exit 1); exit 1; }; } 

    # Don't try to exec as it changes $[0], causing all sort of problems 
    # (the dirname of $[0] is not the place where we might find the 
    # original and so on. Autoconf is especially sensible to this). 
    . ./$as_me.lineno 
    # Exit status is that of the last command. 
    exit 
} 


case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in 
    *c*,-n*) ECHO_N= ECHO_C=' 
' ECHO_T=' ' ;; 
    *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; 
    *)  ECHO_N= ECHO_C='\c' ECHO_T= ;; 
esac 

if expr a : '\(a\)' >/dev/null 2>&1; then 
    as_expr=expr 
else 
    as_expr=false 
fi 

rm -f conf$$ conf$$.exe conf$$.file 
echo >conf$$.file 
if ln -s conf$$.file conf$$ 2>/dev/null; then 
    # We could just check for DJGPP; but this test a) works b) is more generic 
    # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). 
    if test -f conf$$.exe; then 
    # Don't use ln at all; we don't have any links 
    as_ln_s='cp -p' 
    else 
    as_ln_s='ln -s' 
    fi 
elif ln conf$$.file conf$$ 2>/dev/null; then 
    as_ln_s=ln 
else 
    as_ln_s='cp -p' 
fi 
rm -f conf$$ conf$$.exe conf$$.file 

as_executable_p="test -f" 

# Sed expression to map a string onto a valid CPP name. 
as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" 

# Sed expression to map a string onto a valid variable name. 
as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" 


# IFS 
# We need space, tab and new line, in precisely that order. 
as_nl=' 
' 
IFS=" $as_nl" 

# CDPATH. 
$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } 

exec 6>&1 

# Open the log real soon, to keep \$[0] and so on meaningful, and to 
# report actual input values of CONFIG_FILES etc. instead of their 
# values after options handling. Logging --version etc. is OK. 
exec 5>>config.log 
{ 
    echo 
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 
## Running $as_me. ## 
_ASBOX 
} >&5 
cat >&5 <<_CSEOF 

This file was extended by $as_me, which was 
generated by GNU Autoconf 2.53. Invocation command line was 

    CONFIG_FILES = $CONFIG_FILES 
    CONFIG_HEADERS = $CONFIG_HEADERS 
    CONFIG_LINKS = $CONFIG_LINKS 
    CONFIG_COMMANDS = $CONFIG_COMMANDS 
    $ $0 [email protected] 

_CSEOF 
echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 
echo >&5 
config_files=" Makefile" 

ac_cs_usage="\ 
\`$as_me' instantiates files from templates according to the 
current configuration. 

Usage: $0 [OPTIONS] [FILE]... 

    -h, --help  print this help, then exit 
    -V, --version print version number, then exit 
    -d, --debug  don't remove temporary files 
     --recheck update $as_me by reconfiguring in the same conditions 
    --file=FILE[:TEMPLATE] 
        instantiate the configuration file FILE 

Configuration files: 
$config_files 

Report bugs to <[email protected]>." 
ac_cs_version="\ 
config.status 
configured by ./configure, generated by GNU Autoconf 2.53, 
    with options \"\" 

Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 
Free Software Foundation, Inc. 
This config.status script is free software; the Free Software Foundation 
gives unlimited permission to copy, distribute and modify it." 
srcdir=. 
# If no file are specified by the user, then we need to provide default 
# value. By we need to know if files were specified by the user. 
ac_need_defaults=: 
while test $# != 0 
do 
    case $1 in 
    --*=*) 
    ac_option=`expr "x$1" : 'x\([^=]*\)='` 
    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` 
    shift 
    set dummy "$ac_option" "$ac_optarg" ${1+"[email protected]"} 
    shift 
    ;; 
    -*);; 
    *) # This is not an option, so the user has probably given explicit 
    # arguments. 
    ac_need_defaults=false;; 
    esac 

    case $1 in 
    # Handling of the options. 
    -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) 
    echo "running /bin/sh ./configure " " --no-create --no-recursion" 
    exec /bin/sh ./configure --no-create --no-recursion ;; 
    --version | --vers* | -V) 
    echo "$ac_cs_version"; exit 0 ;; 
    --he | --h) 
    # Conflict between --help and --header 
    { { echo "$as_me:$LINENO: error: ambiguous option: $1 
Try \`$0 --help' for more information." >&5 
echo "$as_me: error: ambiguous option: $1 
Try \`$0 --help' for more information." >&2;} 
    { (exit 1); exit 1; }; };; 
    --help | --hel | -h) 
    echo "$ac_cs_usage"; exit 0 ;; 
    --debug | --d* | -d) 
    debug=: ;; 
    --file | --fil | --fi | --f) 
    shift 
    CONFIG_FILES="$CONFIG_FILES $1" 
    ac_need_defaults=false;; 
    --header | --heade | --head | --hea) 
    shift 
    CONFIG_HEADERS="$CONFIG_HEADERS $1" 
    ac_need_defaults=false;; 

    # This is an error. 
    -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 
Try \`$0 --help' for more information." >&5 
echo "$as_me: error: unrecognized option: $1 
Try \`$0 --help' for more information." >&2;} 
    { (exit 1); exit 1; }; } ;; 

    *) ac_config_targets="$ac_config_targets $1" ;; 

    esac 
    shift 
done 

for ac_config_target in $ac_config_targets 
do 
    case "$ac_config_target" in 
    # Handling of arguments. 
    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; 
    *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 
echo "$as_me: error: invalid argument: $ac_config_target" >&2;} 
    { (exit 1); exit 1; }; };; 
    esac 
done 

# If the user did not use the arguments to specify the items to instantiate, 
# then the envvar interface is used. Set only those that are not. 
# We use the long form for the default assignment because of an extremely 
# bizarre bug on SunOS 4.1.3. 
if $ac_need_defaults; then 
    test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files 
fi 

# Create a temporary directory, and hook for its removal unless debugging. 
$debug || 
{ 
    trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 
    trap '{ (exit 1); exit 1; }' 1 2 13 15 
} 

# Create a (secure) tmp directory for tmp files. 
: ${TMPDIR=/tmp} 
{ 
    tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && 
    test -n "$tmp" && test -d "$tmp" 
} || 
{ 
    tmp=$TMPDIR/cs$$-$RANDOM 
    (umask 077 && mkdir $tmp) 
} || 
{ 
    echo "$me: cannot create a temporary directory in $TMPDIR" >&2 
    { (exit 1); exit 1; } 
} 


# 
# CONFIG_FILES section. 
# 

# No need to generate the scripts if there are no CONFIG_FILES. 
# This happens for instance when ./config.status config.h 
if test -n "$CONFIG_FILES"; then 
    # Protect against being on the right side of a sed subst in config.status. 
    sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; 
    s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF 
s,@[email protected],/bin/sh,;t t 
s,@[email protected],:,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],${prefix},;t t 
s,@[email protected],/usr/local,;t t 
s,@[email protected],s,x,x,,;t t 
s,@[email protected],${exec_prefix}/bin,;t t 
s,@[email protected],${exec_prefix}/sbin,;t t 
s,@[email protected],${exec_prefix}/libexec,;t t 
s,@[email protected],${prefix}/share,;t t 
s,@[email protected],${prefix}/etc,;t t 
s,@[email protected],${prefix}/com,;t t 
s,@[email protected],${prefix}/var,;t t 
s,@[email protected],${exec_prefix}/lib,;t t 
s,@[email protected],${prefix}/include,;t t 
s,@[email protected],/usr/include,;t t 
s,@[email protected],${prefix}/info,;t t 
s,@[email protected],${prefix}/man,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" ,;t t 
s,@[email protected],,;t t 
s,@[email protected],-n,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],gcc,;t t 
s,@[email protected],-g -O2,;t t 
s,@[email protected],,;t t 
s,@[email protected],,;t t 
s,@[email protected],gcc,;t t 
s,@[email protected],.exe,;t t 
s,@[email protected],o,;t t 
s,@[email protected],i686-pc-cygwin,;t t 
s,@[email protected],i686,;t t 
s,@[email protected],pc,;t t 
s,@[email protected],cygwin,;t t 
s,@[email protected],i686-pc-cygwin,;t t 
s,@[email protected],i686,;t t 
s,@[email protected],pc,;t t 
s,@[email protected],cygwin,;t t 
CEOF 

    # Split the substitutions into bite-sized pieces for seds with 
    # small command number limits, like on Digital OSF/1 and HP-UX. 
    ac_max_sed_lines=48 
    ac_sed_frag=1 # Number of current file. 
    ac_beg=1 # First line for current file. 
    ac_end=$ac_max_sed_lines # Line after last line for current file. 
    ac_more_lines=: 
    ac_sed_cmds= 
    while $ac_more_lines; do 
    if test $ac_beg -gt 1; then 
     sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag 
    else 
     sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag 
    fi 
    if test ! -s $tmp/subs.frag; then 
     ac_more_lines=false 
    else 
     # The purpose of the label and of the branching condition is to 
     # speed up the sed processing (if there are no `@' at all, there 
     # is no need to browse any of the substitutions). 
     # These are the two extra sed commands mentioned above. 
     (echo ':t 
    /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed 
     if test -z "$ac_sed_cmds"; then 
    ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" 
     else 
    ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" 
     fi 
     ac_sed_frag=`expr $ac_sed_frag + 1` 
     ac_beg=$ac_end 
     ac_end=`expr $ac_end + $ac_max_sed_lines` 
    fi 
    done 
    if test -z "$ac_sed_cmds"; then 
    ac_sed_cmds=cat 
    fi 
fi # test -n "$CONFIG_FILES" 

for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue 
    # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". 
    case $ac_file in 
    - | *:- | *:-:*) # input from stdin 
     cat >$tmp/stdin 
     ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` 
     ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; 
    *:*) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` 
     ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; 
    *) ac_file_in=$ac_file.in ;; 
    esac 

    # Compute @[email protected], @[email protected], and @[email protected] for subdirectories. 
    ac_dir=`(dirname "$ac_file") 2>/dev/null || 
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 
     X"$ac_file" : 'X\(//\)[^/]' \| \ 
     X"$ac_file" : 'X\(//\)$' \| \ 
     X"$ac_file" : 'X\(/\)' \| \ 
     .  : '\(.\)' 2>/dev/null || 
echo X"$ac_file" | 
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } 
     /^X\(\/\/\)[^/].*/{ s//\1/; q; } 
     /^X\(\/\/\)$/{ s//\1/; q; } 
     /^X\(\/\).*/{ s//\1/; q; } 
     s/.*/./; q'` 
    { case "$ac_dir" in 
    [\\/]* | ?:[\\/]*) as_incr_dir=;; 
    *)      as_incr_dir=.;; 
esac 
as_dummy="$ac_dir" 
for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "[email protected]"`; do 
    case $as_mkdir_dir in 
    # Skip DOS drivespec 
    ?:) as_incr_dir=$as_mkdir_dir ;; 
    *) 
     as_incr_dir=$as_incr_dir/$as_mkdir_dir 
     test -d "$as_incr_dir" || 
     mkdir "$as_incr_dir" || 
    { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 
echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} 
    { (exit 1); exit 1; }; } 
    ;; 
    esac 
done; } 

    ac_builddir=. 

if test "$ac_dir" != .; then 
    ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` 
    # A "../" for each directory in $ac_dir_suffix. 
    ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` 
else 
    ac_dir_suffix= ac_top_builddir= 
fi 

case $srcdir in 
    .) # No --srcdir option. We are building in place. 
    ac_srcdir=. 
    if test -z "$ac_top_builddir"; then 
     ac_top_srcdir=. 
    else 
     ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` 
    fi ;; 
    [\\/]* | ?:[\\/]*) # Absolute path. 
    ac_srcdir=$srcdir$ac_dir_suffix; 
    ac_top_srcdir=$srcdir ;; 
    *) # Relative path. 
    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix 
    ac_top_srcdir=$ac_top_builddir$srcdir ;; 
esac 
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be 
# absolute. 
ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` 
ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` 
ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` 
ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` 



    if test x"$ac_file" != x-; then 
    { echo "$as_me:$LINENO: creating $ac_file" >&5 
echo "$as_me: creating $ac_file" >&6;} 
    rm -f "$ac_file" 
    fi 
    # Let's still pretend it is `configure' which instantiates (i.e., don't 
    # use $as_me), people would be surprised to read: 
    # /* config.h. Generated by config.status. */ 
    if test x"$ac_file" = x-; then 
    configure_input= 
    else 
    configure_input="$ac_file. " 
    fi 
    configure_input=$configure_input"Generated from `echo $ac_file_in | 
            sed 's,.*/,,'` by configure." 

    # First look for the input files in the build tree, otherwise in the 
    # src tree. 
    ac_file_inputs=`IFS=: 
    for f in $ac_file_in; do 
     case $f in 
     -) echo $tmp/stdin ;; 
     [\\/$]*) 
     # Absolute (can't be DOS-style, as IFS=:) 
     test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 
echo "$as_me: error: cannot find input file: $f" >&2;} 
    { (exit 1); exit 1; }; } 
     echo $f;; 
     *) # Relative 
     if test -f "$f"; then 
      # Build tree 
      echo $f 
     elif test -f "$srcdir/$f"; then 
      # Source tree 
      echo $srcdir/$f 
     else 
      # /dev/null tree 
      { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 
echo "$as_me: error: cannot find input file: $f" >&2;} 
    { (exit 1); exit 1; }; } 
     fi;; 
     esac 
    done` || { (exit 1); exit 1; } 
    sed "/^[ ]*VPATH[ ]*=/{ 
s/:*\$(srcdir):*/:/; 
s/:*\${srcdir}:*/:/; 
s/:*@[email protected]:*/:/; 
s/^\([^=]*=[ ]*\):*/\1/; 
s/:*$//; 
s/^[^=]*=[ ]*$//; 
} 

:t 
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b 
s,@[email protected],$configure_input,;t t 
s,@[email protected],$ac_srcdir,;t t 
s,@[email protected],$ac_abs_srcdir,;t t 
s,@[email protected],$ac_top_srcdir,;t t 
s,@[email protected],$ac_abs_top_srcdir,;t t 
s,@[email protected],$ac_builddir,;t t 
s,@[email protected],$ac_abs_builddir,;t t 
s,@[email protected],$ac_top_builddir,;t t 
s,@[email protected],$ac_abs_top_builddir,;t t 
" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out 
    rm -f $tmp/stdin 
    if test x"$ac_file" != x-; then 
    mv $tmp/out $ac_file 
    else 
    cat $tmp/out 
    rm -f $tmp/out 
    fi 

done 

{ (exit 0); exit 0; } 

和日誌文件:

http://i1289.photobucket.com/albums/b501/kjc_igd/code_zpsf6313db1.jpg

,但我還好,雖然它安裝!現在我終於可以轉換文件了,對吧?沒有。

$ fondu Frituger.dfont 
bash: fondu: command not found 

事情甚至不會識別命令。

,所以我需要以下內容:fondu A.更好的方向(因爲似乎沒有人有他們。) B.一個解決什麼,我在fondu搞砸了(因爲我沒有上運行這些東西的專家) C.將Mac文件樹轉換爲通用字體文件的另一種方法。

回答

0

您要查找的是Mac的字體手提箱文件和Mac的PostScript類型1輪廓字體文件的組合。這兩種類型的文件是資源叉基和包含文件類型和創建者代碼,這就是爲什麼它們需要被分成兩半,(file/._filefile/__MACOSX/file)半部保持在壓縮所有的信息文件。

當您在Mac上解壓縮.zip壓縮文件時,通過/System/Library/CoreServices/FixupResourceForks工具將兩部分連接在一起。當然,這隻適用於支持像HFS這樣的資源分支的文件系統。

我會試着描述一下你在Windows計算機上查看解壓縮存檔時看到的結構。裏面的Frutiger文件夾,您有下列文件:

Frutiger 

FrutiBla 
FrutiBlaIta 
FrutiBol 
FrutiIta 
FrutiLig 
FrutiLigIta 
FrutiRom 
FrutiUtiBla 

列出的第一個文件,Frutiger,是最有可能在Mac字體手提箱文件。它可以被命名爲任何東西,改變它的名字不會影響字體的可用性。此Mac字體手提箱文件將包含相關字體的FOND(字體系列信息)和NFNT(位圖字體實例)。

您會注意到接下來的8個文件的文件名遵循用於Mac PostScript Type 1字體的5-3-3命名約定。我的意思是,要獲取字體手提箱引用的PostScript字體的文件名,您需要輸入姓氏的前5個字母(Fruti),然後在PostScript名稱中追加每種樣式的前3個字母。所以,Frutiger Black ItalicFruti + Bla + Ita == FrutiBlaIta。這些最後8個文件包含資源分叉中POST資源形式的PostScript Type 1輪廓字體數據。

你提到嘗試使用DFontSplitter,但這些都不是蘋果字體手提箱,代表了Mac的TrueType字體的手提箱,因爲它是不可能有任何sfnt資源在Frutiger字體箱文件。

我不確定是否可以從Windows將這些文件轉換爲可用的字體(PostScript Type 1 Windows字體,我假設)。查看fondu的文檔,它可以幫助您,前提是您可以將AppleDouble編碼文件轉換爲fondu可以理解的格式:Macbinary(.bin),binhex(.hqx)或基於數據分叉的資源文件(.dfont或根本沒有擴展名)。

當您使用fondu時,看起來您希望通過-trackps-afm選項。例如,如果你是做上面的文件夾,你會做這樣的事情:

fondu -trackps -afm Frutiger 

注意的Frutiger的文件名可能因轉換什麼格式的AppleDouble編碼的原Frutiger不同。由於您在包含FOND信息的字體手提箱文件上執行此操作,fondu應該能夠「跟隨」FOND中引用的PostScript Type 1字體文件,並將每個5-3-3文件轉換爲.pfb文件。由於FOND資源也可能包含字體字距調整和指標信息,因此您可以將fondu提取到.afm文件中(對於Windows的更高版本,您需要使用其他工具將其轉換爲.pfm)。

關於以下錯誤你得到:

$ fondu Frituger.dfont 
bash: fondu: command not found 

這不是一個錯誤,fondu的報告,這是一個錯誤,bash的報告。 bash是您正在運行的shell,並且它說它無法在其所有已知路徑中找到名爲fondu的命令。如果您當前仍處於可執行文件所在的構建目錄中,則應使用前面的./來告知bash您的意思是fondu位於當前目錄中,而不是fondu命令,該命令是其已知路徑之一:

$ ./fondu Frutiger.dfont 
相關問題