# RTL LTR Attributed String Addition Requested

**URL:** <https://forum.juce.com/t/rtl-ltr-attributed-string-addition-requested/16771>\
**Category:** MacOSX and iOS\
**Created:** [February 18, 2016, 8:05pm UTC](https://forum.juce.com/t/rtl-ltr-attributed-string-addition-requested/16771 "2016-02-18T20:05:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Darrenw](https://avatars.discourse-cdn.com/v4/letter/d/a8b319/32.png) [@Darrenw](https://forum.juce.com/u/Darrenw)\
**Post date:** [February 18, 2016, 8:05pm UTC](https://forum.juce.com/t/rtl-ltr-attributed-string-addition-requested/16771/1 "2016-02-18T20:05:32Z")

</div>

I added some code in juce\_mac\_Fonts.mm to handle the reading direction from an AttributedString.

Would it&nbsp;be possible to put this&nbsp;into the code base?&nbsp;&nbsp;

In&nbsp;&nbsp;static CFAttributedStringRef createCFAttributedString (const AttributedString& text)&nbsp;the following was added.

&nbsp;

```
CTWritingDirection ctWritingDirection = kCTWritingDirectionNatural;

        switch (text.getReadingDirection()){

            case AttributedString::ReadingDirection::natural: break;

            case AttributedString::ReadingDirection::rightToLeft: ctWritingDirection = kCTWritingDirectionRightToLeft; break;

            case AttributedString::ReadingDirection::leftToRight: ctWritingDirection = kCTWritingDirectionLeftToRight; break;

        }

        CTParagraphStyleSetting settings[] =

        {

            { kCTParagraphStyleSpecifierAlignment, sizeof (CTTextAlignment), &ctTextAlignment },

            { kCTParagraphStyleSpecifierLineBreakMode, sizeof (CTLineBreakMode), &ctLineBreakMode },

            { kCTParagraphStyleSpecifierBaseWritingDirection, sizeof (CTWritingDirection), &ctWritingDirection},

            

           #if defined (MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7

            { kCTParagraphStyleSpecifierLineSpacingAdjustment, sizeof (CGFloat), &ctLineSpacing }

           #else

            { kCTParagraphStyleSpecifierLineSpacing, sizeof (CGFloat), &ctLineSpacing }

           #endif

        };
```

Thanks,

Darren

&nbsp;

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [February 24, 2016, 9:52am UTC](https://forum.juce.com/t/rtl-ltr-attributed-string-addition-requested/16771/2 "2016-02-24T09:52:38Z")

</div>

Thanks, sounds like a sensible addition, I'll take a look at that today!

---

<div class="post-metadata">

**Author:** ![martinrobinson-2](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/martinrobinson-2/32/630_2.png) [@martinrobinson-2](https://forum.juce.com/u/martinrobinson-2)\
**Post date:** [March 10, 2016, 12:11pm UTC](https://forum.juce.com/t/rtl-ltr-attributed-string-addition-requested/16771/3 "2016-03-10T12:11:12Z")

</div>

Hello,

In juce\_max\_Fonts.mm, could this be changed to:

```
static CTWritingDirection getWritingDirection (const AttributedString& text)
    {
        switch (text.getReadingDirection())
        {
            case AttributedString::rightToLeft: return kCTWritingDirectionRightToLeft;
            case AttributedString::leftToRight: return kCTWritingDirectionLeftToRight;
            default: return kCTWritingDirectionNatural;
        }
    }
```

Removing&nbsp; "::ReadingDirection"&nbsp; ?

This is only thing that prevents building on Mac with less than C++11 (and consistent with the other use of enums).

Best,

Martin

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [March 10, 2016, 12:12pm UTC](https://forum.juce.com/t/rtl-ltr-attributed-string-addition-requested/16771/4 "2016-03-10T12:12:54Z")

</div>

Sure, will do, thanks Martin!
