La descripción y las interpretaciones de los puntos y curvas de fuentes TrueType

Recientemente se hizo una pregunta en otro foro que me hizo repensar mi comprensión de los formatos vectoriales. Las fuentes TrueType están en formato vectorial y, antes había pensado, que si un editor de vectores las presentara para su edición, presentaría solo los puntos descritos en la forma de la fuente original y, si hay curvas, presentaría los identificadores apropiados en solo esos puntos

No veo cómo un paquete de software ( Glyphs ) puede interpretar un Arial como 20 puntos y otro (Illustrator) interpretarlo como 37 puntos cuando se convierte en contornos o se expande. No tengo Glyphs a mano, pero puedo confirmar que Illustrator presentó 37 puntos cuando me probé. El póster original proporcionó ilustraciones de ambos resultados de la siguiente manera:

La a de Arial en Glyphs :

La palabra arial en la misma fuente en Illustrator (enfóquese en los puntos en la letra a frente a lo mismo en Glyphs ):

Entiendo el concepto básico de los archivos de imágenes vectoriales; que los datos son una serie de coordenadas para puntos y otra información que detalla matemáticamente la cantidad de curva (o falta de) entre puntos. Lo que no entiendo son dos cosas:

  1. ¿Los datos en una fuente TrueType no se describen de tal manera que puedan traducirse muy literalmente a una forma editable en Illustrator cuando se delinean? ¿Por qué Illustrator ha añadido puntos adicionales? ¿O el formato TrueType no se describe usando puntos en absoluto (no veo cómo)?

  2. Glyphs parece demostrar que es posible describir ciertas curvas en una cantidad limitada de puntos. ¿Por qué una pieza de software de gran reputación como Illustrator necesitaría más puntos para describir la misma curva? Vería esto como una mala traducción e imagino que la mayoría de los usuarios también esperarían esto. Esto se superpone un poco con la pregunta uno, por lo que quizás una sola respuesta cubra ambas.

¿Puede incluir un enlace a la discusión anterior (y la fuente de las imágenes, IIUC)?
Me temo que la publicación original era un lío profano y estaba redactada en torno a la cuestión del malware/virus que causaba este problema (y no era un foro de diseño gráfico, por lo que la gente estaba considerando esta idea sin mucho mérito en la discusión). No me aventuré en eso, pero me llevó a reflexionar sobre la pregunta que he hecho aquí.
Una nota: su imagen de arial en Illustrator muestra 37 puntos de anclaje para la letra a, no 36. Además, obtengo lo que parecen ser exactamente los mismos (37) nodos en CorelDRAW que se muestran en el ejemplo de Illustrator, así que cualquier conversión de Illustrator está haciendo es probablemente lo mismo en Corel (y por lo tanto no del todo arbitrario).
@ 1006a ¡Estoy impresionado de que se haya tomado el tiempo de verificar! Interesante que CorelDRAW coincida con Illustrator . No esperaría que ninguno de ellos agregue puntos arbitrariamente (y creo que puedo ver un patrón en el que agrega anclajes de punto medio si la línea se dobla más allá de un cierto ángulo), pero todavía no estoy seguro de por qué es eso.
Je, bueno, en realidad no conté al principio, solo probé la conversión en CorelDraw y noté que decía 37 nodos; entonces no pude ver dónde difería de la imagen, así que por supuesto tuve que contar ;-). Creo que estas preguntas y respuestas sobre SO "Los glifos de la fuente TrueType están hechos de Bézier cuadrático. ¿Por qué aparecen más de un punto consecutivo fuera de la curva en el contorno del glifo?" parezca útil para la pregunta de dónde podrían provenir los puntos "adicionales" (también los recursos vinculados en la respuesta).

Respuestas (3)

TrueType utiliza curvas Bézier cuadráticas, mientras que la mayoría de los demás programas vectoriales (incluidos Glyphs e Illustrator) utilizan curvas Bézier cúbicas. Puede ver que su ejemplo de Glyphs no usa curvas cuadráticas de Bézier ya que los controladores de anclajes adyacentes no se conectan.

Ahora, las curvas de Bézier cuadráticas son un caso especial de las curvas de Bézier cúbicas¹ y, por lo tanto, la conversión de la primera a la última es sencilla y mi suposición basada en su ejemplo es que Glyphs utiliza una conversión tan sencilla. Por motivos que me superan, Illustrator convierte las curvas cuadráticas de Bézier en cúbicas de una manera diferente que utiliza más anclas².


¹ así como cada cuadrado es también un rectángulo, cada círculo es una elipse, y así sucesivamente
² aquí hay una observación más detallada del mismo fenómeno en un foro alemán

No estaba al tanto de la distinción entre varias curvas de Bezier, gracias por eso. Si está sugiriendo que las curvas de Bézier cuadráticas son (más o menos) un subconjunto de las curvas de Bézier cúbicas, todavía surge la pregunta de por qué Illustrator está insertando puntos innecesarios (en el sentido que Glyphs demostró) en lugar de proporcionar una conversión literal como puede Su explicación de las curvas de Bézier cuadráticas a cúbicas sugeriría que es muy poco probable que Glyphs reduzca la cantidad de puntos, lo que, a su vez, sugeriría que el ilustrador está agregando puntos adicionales. No probado, por supuesto.
todavía plantea la pregunta de por qué Illustrator está insertando puntos innecesarios (en el sentido en que lo demostró Glyphs) en lugar de proporcionar una conversión tan literal como sea posible. – como dije, la razón de esto está más allá de mí. Todo lo que puedo decir es que este fenómeno (Illustrator agregando anclas adicionales) se ha observado antes.
Esa pregunta de seguimiento en particular estaba destinada en general a cualquier persona que lea, aunque entiendo por qué la interpretó como dirigida a usted @Wrzlprmft. Disculpas por la confusión y gracias por la entrada hasta ahora.
@joojaa: puede ser más robusto dividir la curva en el punto de inflexión. – Las curvas de Bézier cuadráticas no pueden tener puntos de inflexión fuera de los anclajes. Por lo tanto, ellos y sus equivalentes cúbicos se dividen automáticamente en puntos de inflexión. — Además, si espera una degeneración o similar en ciertos casos al realizar una conversión, generalmente también puede predecir cuándo sucederá, por lo que no tiene que cambiar esto todo el tiempo. Finalmente, muchos otros programas parecen funcionar bien con la conversión directa de cuadrático a cúbico.

Si bien no puedo confirmar esto (revisé el Manual de Glyphs y la Ayuda/tutoriales en línea), parece que la aplicación Glyphs convierte automáticamente los contornos TrueType en contornos PostScript (recordemos que los contornos TT son de segundo orden, los contornos PS son de tercer orden. Además, OTF puede contener esquemas TT o PS, mientras que TTF puede contener esquemas TT).

Si está importando el tipo de letra Arial (que estoy casi seguro de que es un archivo TTF), significa que está importando contornos TT, luego Glyphs se convierte en contornos PS. Por lo tanto, menos puntos. Aquí está Arial.ttf convertido a PS Outlines en FontLab VI (29 nodos):

Esquema PS Arial

Si abre la misma fuente conservando los contornos TT (en este ejemplo, abierta en FontLab Studio 5), obtiene 37 nodos (recuerde, hay un nodo implícito entre puntos de control sucesivos):

Esquema Arial TT

En Illustrator, lo más probable es que el tipo sea manejado por un motor de tipo que conserva el formato de los contornos, y los puntos cuadráticos simplemente se traducen en el comando Crear contorno (intente crear el contorno de la viñeta, un círculo: creará 8 nodos, coherentes con el formato subyacente cuadrático...) Por lo tanto, se crean más puntos. Aquí, en ilustrador cs6:

ingrese la descripción de la imagen aquí

Los mismos 37 nodos.

Editar : Por cierto, respondiendo a la pregunta: Glyphs "simplifica" la curva TT usando Bezier Degree Elevation , es decir, convirtiendo el contorno TT en PS.

¡Muy informativo! Gracias. Entonces, ¿estaría en lo correcto al revertir mi suposición anterior de que Glyphs de hecho (técnicamente) está reduciendo la cantidad de puntos de anclaje que habría utilizado el diseñador original para dibujar la forma de la letra e Illustrator mantiene los mismos puntos de anclaje utilizados originalmente (si ignoramos en qué formato estaban/están los vectores)?
No, de hecho, es posible reducir contornos cuadráticos a contornos cúbicos sin perder precisión. Significa que Glyphs conserva la precisión, pero modifica el formato. Illustrator, por otro lado, lo está exagerando ya que, para cada nodo cuadrático, está creando un nodo cúbico (verifique el contorno creado, cada nodo tiene dos puntos de control, por lo tanto, es cúbico). Introduce una precisión innecesaria, pero al menos es computacionalmente rápido y exacto. Por cierto, al revés (convertir cúbicos en cuadráticos, o contornos PS en contornos TT) pierde precisión.
Quizás sobrevaloré la declaración con respecto a Illustrator : that preserves the outlines formatsugiriendo que Glyphs no estaba preservando el contorno y llegué a la conclusión de que la conversión de Glyphs fue un poco menos fiel. Volveré a mi suposición original ahora (que de todos modos tenía más sentido). Gracias.
Si Illustrator exagera y agrega detalles innecesarios, y Glyphs simplifica la curva original, ambos sugerirían que ninguno de los dos resultados es una representación fiel. Si yo fuera el artista original que tuviera que colocar puntos de anclaje a propósito para dibujar la forma de cada personaje y arrastrar los controles para controlar las curvas, ¿qué traducción reconocería como la que tiene las propiedades originales de mi diseño? Habría pensado Glyphs, de nuestra discusión anterior, pero el término simplificado me ha desconcertado nuevamente. ¿O está sugiriendo que los algoritmos de Bezier se simplifican y no la densidad de los puntos de anclaje?
Es por eso que uso comillas en simplificar . Cito la wiki (que cita un libro en la referencia 15): "Una curva de Bézier de grado n se puede convertir en una curva de Bézier de grado n + 1 con la misma forma ". Al convertir los contornos TT (2º grado) en contornos PS (3er grado), no se pierde el diseño original, matemáticamente hablando. Si intenta volver de PS a TT, podría perder información. Ahora bien, también hay muchos factores que pueden introducir distorsiones: la representación interna de las formas, errores de redondeo, etc.
Continuación: algunos editores usan coordenadas decimales para los nodos/puntos y luego exportan coordenadas enteras redondeadas, que afectan la forma exacta de las curvas. Sugiero usar herramientas para editar fuentes en su formato original, si desea conservar la fidelidad. De lo contrario, mi preferencia es usar siempre contornos PS. (¡Aunque los contornos de TT le permiten usar algunos procedimientos de sugerencias perversos! :PI supongo que serán útiles cuando trabaje con dispositivos de muy baja resolución...)
gracias por la explicación adicional. Creo que incluso has logrado entender mucho de esto. Muy apreciado.

¿Posiblemente cambia la cantidad de puntos de control debido a la infracción de derechos de autor? Si coincidiera exactamente con el número de puntos, ¿sería ilegal?

Soy la copia registrada número 758 de Illustrator en los EE. UU. v1.0, que no podía hacer contornos de fuentes en ese momento. El primer día del lanzamiento de Adobe vendió menos de 1000 copias, el segundo día vendió alrededor de 16 000 copias.

Solo mi entrada, siempre puede simplificar la ruta para agregar o eliminar puntos.

También usé fontographer en ese entonces y hacer un tipo de letra perfecto con todos los caracteres no es fácil. Me tomó más de 45 días cerrarlo, pero nunca fue perfecto.

En realidad, esa es una razón bastante razonable, pero si especulamos, supongo que es algún tipo de residuo del procesamiento de enteros.
¿Por qué sería una infracción de derechos de autor cuando el formato es claro (curvas cuadráticas de Bézier) y debería poder reproducirse fácilmente? Aparte de eso, no estoy seguro de que el resto de la historia sobre el lanzamiento de Illustrator y Fontographer esté relacionado en absoluto con TrueType.
Además, si cambiar la cantidad de puntos de control es suficiente para evitar problemas de derechos de autor, pixelarlo haría lo mismo. Sinceramente lo dudo. (CC @joojaa)
@Wrzlprmft Ningún derecho de autor no es la razón, hacer que copiar las curvas sea más difícil. Adobe solía tener el monopolio del motor de fuentes. Por lo tanto, al no permitir que las personas tengan acceso directo a los datos subyacentes, la vida de los copiadores de fuentes es más difícil. Este punto es discutible hoy, pero nuevamente el ilustrador es INCREÍBLEMENTE viejo
@AndrewT. sí, tal vez los derechos de autor sean una idea equivocada, pero la copia se ve un poco obstaculizada, las curvas duplicadas dificultan la manipulación de la fuente.
@joojaa Es una teoría interesante con respecto a obstaculizar la capacidad de manipular la fuente mientras se cumple la acción de proporcionarla como una ruta nativa editable en Illustrator. Adobe incursiona en obstaculizar la reproducción de moneda en Photoshop y me imagino que hubo cierta presión externa para tomar esta acción. En términos de fuentes, pude ver la presión externa e interna para dificultar la manipulación posible.