> 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