estoy tratando de encontrar los límites de una línea de texto en la base del texto. Para simplificar, suponga que tiene un solo carácter. Por el momento estoy usando el siguiente método:Buscar texto en texto Core
line = CTLineCreateWithAttributedString(attrString);
rect = CTLineGetImageBounds(line, context);
Se trabaja la mayor parte de las veces, pero para algunos personajes, como d matemáticas cursiva (Unicode: 0x1D451) o matemáticas q cursiva (Unicode: 0x1D45E), el ancho es un poco corto.
Intenté usar CTLineGetTypographicBounds()
o CTFramesetterSuggestFrameSizeWithConstraints
, pero tampoco ayudaron (creo que usan el avance del glifo para encontrar el ancho, no su ancho gráfico). Como la fuente en sí no es cursiva, tampoco puedo usa el ángulo inclinado para corregir esto.
Intenté acceder a los glifos directamente y usando CTFontCreatePathForGlyph()
, pero fallaron porque CGGlyph y UniChar son ambos de 16 bits y necesito caracteres de 32 bits.
¿Alguien sabe si estoy haciendo algo mal? Si es así, ¿cuál es el camino correcto?
Actualización:
Para asegurarse de que no es un problema relacionado con el tipo de letra, que utiliza diferentes tipos de letra. El problema existe incluso para los caracteres ASCII en Arial Italic.
Actualización:
caso omiso de mi anterior actualización! Resulta que este (problema con Arial Italic) fue mi propio error. El primer problema aún se mantiene.
Acabo de presentar un error. Te dejaré saber si escucho algo. – mohsenr