2 votos

Mac OS X Terminal crea archivos de cero bytes

Soy un desarrollador de fuentes. Quiero fusionar un código DSIG en una fuente con formato TrueType (TTF) que lo hace compatible con las aplicaciones de Microsofts que utilizan características OpenType. He tenido este trabajo antes, pero ahora sólo puede producir un archivo font.ttf de cero bytes. Estoy usando Kit de desarrollo de Adobe Font (AFDKO) ). como se indica junto con el Terminal para hacer la fusión. Agradecería saber por qué me sale un archivo de cero bytes.

Aquí está mi método paso a paso, seguido del código resultante de la ventana del Terminal.

  1. Inicie una nueva sesión de Terminal e introduzca

    which ttx

    Un camino que termina en ttx significa que se puede ir.

  2. Pega este fragmento

    FLDR="${HOME}/Desktop/Dsig fldr"
    mkdir -p "$FLDR"
    cd "$FLDR"
    cat > dsig.ttx<<EOF
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="2.4">
    <DSIG>
    <hexdata>
    00000001 00000000
    </hexdata>
    </DSIG>
    </ttFont>
    EOF

    después de introducir la tecla de retorno:

    open .

Esto crea una nueva carpeta en el escritorio titulada 'Dsig fldr'. Dentro habrá un archivo recién creado titulado 'dsig.ttx' para usar con esta rutina:

  1. Arrastre la aplicación TTX a la Terminal (ya que aceptó su fragmento Dsig fldr):

    /Users/adrianshome/Downloads/fonttools-2.4/Tools/ttx
  2. Escriba: -m (sin olvidar un espacio después de la m).

    /Users/adrianshome/Desktop/Dsig\ fldr/SassoBooIta.ttf /Users/adrianshome/Desktop/Dsig\ fldr/dsig.ttx

En primer lugar, elimine todos los archivos dsig#.ttf en el fldr Dsig si hay alguno.

A continuación, para cada archivo de fuentes:

  1. Arrastre el archivo de fuentes ttf al terminal (por ejemplo, SassoBoo.ttf)
  2. Arrastra dsig.ttx al terminal y pulsa return

Eso compilará sólo dsig.ttx, fusionará el DSIG en SassoBoo.ttf y producirá un archivo llamado dsig.ttf en el fldr de Dsig, así que ahora

  1. Cambiar el nombre de dsig.ttf por SassoBoo algo.ttf (el nombre original del archivo TrueType)

Hay formas mucho mejores de proceder utilizando scripts.

No cambie los pasos 3 y 4. Tienes que poner el archivo .ttf antes del archivo .ttx.

Notas: dsig.ttx y todos sus archivos .ttf deben residir en la carpeta Dsig fldr. La aplicación TTX puede vivir en cualquier lugar, ya que al arrastrarla se inserta la ruta cada vez.


Este es el código resultante de la Terminal:

Last login: Thu Mar 31 11:41:06 on ttys001
Adrians-iMac:~ adrianshome$ which ttx
/Users/adrianshome/bin/FDK/Tools/osx/ttx
Adrians-iMac:~ adrianshome$ FLDR="${HOME}/Desktop/Dsig fldr"
Adrians-iMac:~ adrianshome$ mkdir -p "$FLDR"
Adrians-iMac:~ adrianshome$ cd "$FLDR"
Adrians-iMac:Dsig fldr adrianshome$ cat > dsig.ttx<<EOF
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="2.4">
> <DSIG>
> <hexdata>
> 00000001 00000000
> </hexdata>
> </DSIG>
> </ttFont>
> EOF
Adrians-iMac:Dsig fldr adrianshome$ open .
Adrians-iMac:Dsig fldr adrianshome$ /Applications/FDK/Tools/osx/ttx  -m /Applications/Dsig\ fldr/CUP\ Folder\ alpha/SassPenTra.ttf /Users/adrianshome/Desktop/Dsig\ fldr/dsig.ttx

Compiling "/Users/adrianshome/Desktop/Dsig fldr/dsig.ttx" to "/Users/adrianshome/Desktop/Dsig fldr/dsig.ttf"...
Parsing 'DSIG' table...
Traceback (most recent call last):
File "/Applications/FDK/Tools/osx/../SharedData/FDKScripts/ttx.py", line 329, in <module>
main(sys.argv[1:])
File "/Applications/FDK/Tools/osx/../SharedData/FDKScripts/ttx.py", line 309, in main
process(jobs, options)
File "/Applications/FDK/Tools/osx/../SharedData/FDKScripts/ttx.py", line 294, in process
action(input, output, options)
File "/Applications/FDK/Tools/osx/../SharedData/FDKScripts/ttx.py", line 216, in ttCompile
ttf.save(output)
File "/Applications/FDK/Tools/osx/Python/Current/lib/python2.7/site-packages/FontToo ls/fontTools/ttLib/__init__.py", line 214, in save
self._writeTable(tag, writer, done)
File "/Applications/FDK/Tools/osx/Python/Current/lib/python2.7/site-packages/FontToo ls/fontTools/ttLib/__init__.py", line 629, in _writeTable
tabledata = self.getTableData(tag)
File "/Applications/FDK/Tools/osx/Python/Current/lib/python2.7/site-packages/FontToo ls/fontTools/ttLib/__init__.py", line 642, in getTableData
return self.tables[tag].compile(self)
File "/Applications/FDK/Tools/osx/Python/Current/lib/python2.7/site-packages/FontToo ls/fontTools/ttLib/tables/D_S_I_G_.py", line 60, in compile
packed = sstruct.pack(DSIG_HeaderFormat, self)
File "/Applications/FDK/Tools/osx/Python/Current/lib/python2.7/site-packages/FontToo ls/fontTools/misc/sstruct.py", line 68, in pack
value = obj[name]
KeyError: 'ulVersion'

0 votos

Intentaré editar esto para que el formato sea más claro, aunque puede que tengas que volver a introducir algunos datos si me equivoco...

0 votos

Parece que se han añadido algunos espacios y saltos de línea adicionales. Una cosa a tratar sería utilizar un editor de texto para comprobar o volver a hacer el archivo en el cat paso. Parece que tienes una secuencia de dígitos y luego un salto de línea antes de que termine el archivo. Intente lo siguiente nano para editar ese archivo, ya que no codifica el texto y tiene ayuda en pantalla. También - ¿tiene un ejemplo de trabajo para comprobar contra el que falla?

1voto

klanomath Puntos 19587

No es el Terminal el que crea el archivo de cero bytes, sino un montón de scripts que, o bien no les gusta tu fuente ttf o el archivo DSIG ficticio. O el archivo ttf original ya contiene una firma digital.

Lo mejor que puedes intentar es lo siguiente:

Volcar el archivo ttf copiado (en mi ejemplo he copiado el archivo de fuentes TrueType Andale Mono.ttf a una carpeta llamada FontMod en mi escritorio):

ttx /Users/user/Desktop/FontMod/Andale\ Mono.ttf

Elimine o cambie el nombre del archivo ttf original en la carpeta de trabajo. Abra el archivo ttx resultante con un editor de texto decente como TextWrangler , BBEdit o incluso nano.

Si el archivo ttx no contiene un <DSIG>...</DSIG> simplemente añada el siguiente fragmento al final, justo antes del cierre </ttFont> etiqueta.

  <DSIG>
    <!-- note that the Digital Signature will be invalid after recompilation! -->
    <tableHeader flag="0x1" numSigs="1" version="1"/>
    <SignatureRecord format="1">
-----BEGIN PKCS7-----
0000000100000000
-----END PKCS7-----
    </SignatureRecord>
  </DSIG>

y guardar el resultado.

Si el archivo ttx ya contiene una sección DSIG, puede intentar sustituir la parte PKCS7:

  <DSIG>
    <!-- note that the Digital Signature will be invalid after recompilation! -->
    <tableHeader flag="0x1" numSigs="1" version="1"/>
    <SignatureRecord format="1">
-----BEGIN PKCS7-----
MIIllQYJKoZIhvcNAQcCoIIlhjCCJYICAQExCzAJBgUrDgMCGgUAMGEGCisGAQQBgjcCAQSgUzBR
...
tCPnxeRQVRtMEWQXYd27Fkhu/dLhBloN2ti3CGPKPTneEW7TrcwcpUH4yvX9gyzjXQ==
-----END PKCS7-----
    </SignatureRecord>
  </DSIG>

por

  <DSIG>
    <!-- note that the Digital Signature will be invalid after recompilation! -->
    <tableHeader flag="0x1" numSigs="1" version="1"/>
    <SignatureRecord format="1">
-----BEGIN PKCS7-----
0000000100000000
-----END PKCS7-----
    </SignatureRecord>
  </DSIG>

y guardar el resultado.

En cualquier caso, reconstruya el archivo de fuentes:

ttx /Users/user/Desktop/FontMod/Andale\ Mono.ttx

Si todavía necesitas un fragmento para crear un archivo disg.ttx utiliza algo así:

...
cat > dsig.ttx<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.0">
<DSIG>
<!-- note that the Digital Signature will be invalid after recompilation! -->
<tableHeader flag="0x1" numSigs="1" version="1"/>
<SignatureRecord format="1">
-----BEGIN PKCS7-----
0000000100000000
-----END PKCS7-----
</SignatureRecord>
</DSIG>
</ttFont>
EOF

Tenga en cuenta que el codificación xml y el ttLibVersion probablemente tengan que adaptarse a las versiones respectivas en el archivo ttf.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X