2010-05-05 19 views
7

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.

Respuesta

3

Tras el informe de error que hice, al parecer esto es un problema CoreText, apareciendo en casos raros. Te lo haré saber tan pronto como encuentre una solución.

actualización: 15 Marzo '12

que se olvidó de actualizar esto antes, pero esto es fijo. La solución está en OS X Lion/iOS 5.

1

Por lo que yo puedo decir, CTLineGetImageBounds es la función correcta de utilizar. Sugiero presentar un informe de error en RadarWeb.

+1

Acabo de presentar un error. Te dejaré saber si escucho algo. – mohsenr

Cuestiones relacionadas