> On 6 Mar 2017, at 23:26, Ken Thomases <k...@codeweavers.com> wrote:
> 
> On Mar 6, 2017, at 3:41 AM, Gerriet M. Denkmann <gerri...@icloud.com> wrote:
>> 
>> I am trying to get bounding rects in a TextView:
>> 
>> NSRange glyphRange = [ layoutManager glyphRangeForCharacterRange:    
>> someCharRange 
>>                                                                              
>>         actualCharacterRange:           NULL
>>                                      ];
>> NSTextContainer *container = [ layoutManager textContainerForGlyphAtIndex:   
>> glyphRange.location  
>>                                                                              
>>                         effectiveRange:         NULL            
>>                                              ];
>> CGRect rect = [ layoutManager boundingRectForGlyphRange: glyphRange 
>> inTextContainer: container ];
>> 
>> The problem:
>> 
>> using the ruler of the TextView I know the actual x-range of someCharRange.
>> But the rect is much bigger on both sides.
>> E.g. selecting a string which occupies 1 cm from 19 cm to 20 cm on the ruler 
>> I get a rect : 18.16 +   3.63 =  21.79
>> 
>> The error (not very surprisingly) depends on the font used.
>> 
>> How can I get a rectangle from my string which closely resembles what is 
>> seen on the screen?
> 
> Try using 
> -enumerateEnclosingRectsForGlyphRange:withinSelectedGlyphRange:inTextContainer:usingBlock:.
>   In particular, if you want rectangles which match how selection looks, pass 
> a valid range for selectedRange.

Does return the same results as boundingRectForGlyphRange.

One thing I forgot, was to shift the returned rect by lineFragmentPadding in 
order to get values compatible with NSTextTab.

Now everything is fine, as long one does not use strange characters, which are 
defined as Thai, Laos, Burma.
Non-strange chars are Ascii, Khmer, Chinese.

I have a TextView where all lines start at 0 and end at 10.028 cm (because 
there is a right tab at the end).

Helvetica 北京     0.000 → 10.028 cm      北0      ← this is a line with a correct 
rect; all following lines are wrong:

Thonburi ม      -0.263 → 10.404 cm      h1
Helvetica  Thonburi ท   -0.402 → 10.397 cm      t6
Helvetica  Thonburi     -0.402 → 10.413 cm      หด
Lao Sangam  ລາວ -0.428 → 10.400 cm      12
Myanmar  သမ္မတ  -0.428 → 10.400 cm      14

One sees that the reported line rectangle is too big on both ends (should be 
0.000 → 10.028 cm for all lines).


Kind regards,

Gerriet.


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to