{"action":"created","issue":{"url":"https://api.github.com/repos/godotengine/godot/issues/10546","repository_url":"https://api.github.com/repos/godotengine/godot","labels_url":"https://api.github.com/repos/godotengine/godot/issues/10546/labels{/name}","comments_url":"https://api.github.com/repos/godotengine/godot/issues/10546/comments","events_url":"https://api.github.com/repos/godotengine/godot/issues/10546/events","html_url":"https://github.com/godotengine/godot/pull/10546","id":251971666,"node_id":"MDExOlB1bGxSZXF1ZXN0MTM2OTkxMjQ3","number":10546,"title":"[WIP] Add support for bidi text output","user":{"login":"bruvzg","id":7645683,"node_id":"MDQ6VXNlcjc2NDU2ODM=","avatar_url":"https://avatars0.githubusercontent.com/u/7645683?v=4","gravatar_id":"","url":"https://api.github.com/users/bruvzg","html_url":"https://github.com/bruvzg","followers_url":"https://api.github.com/users/bruvzg/followers","following_url":"https://api.github.com/users/bruvzg/following{/other_user}","gists_url":"https://api.github.com/users/bruvzg/gists{/gist_id}","starred_url":"https://api.github.com/users/bruvzg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bruvzg/subscriptions","organizations_url":"https://api.github.com/users/bruvzg/orgs","repos_url":"https://api.github.com/users/bruvzg/repos","events_url":"https://api.github.com/users/bruvzg/events{/privacy}","received_events_url":"https://api.github.com/users/bruvzg/received_events","type":"User","site_admin":false},"labels":[{"id":279096997,"node_id":"MDU6TGFiZWwyNzkwOTY5OTc=","url":"https://api.github.com/repos/godotengine/godot/labels/archived","name":"archived","color":"888888","default":false},{"id":73330068,"node_id":"MDU6TGFiZWw3MzMzMDA2OA==","url":"https://api.github.com/repos/godotengine/godot/labels/feature%20proposal","name":"feature proposal","color":"1144ff","default":false},{"id":279097966,"node_id":"MDU6TGFiZWwyNzkwOTc5NjY=","url":"https://api.github.com/repos/godotengine/godot/labels/topic:core","name":"topic:core","color":"ffdd44","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/godotengine/godot/milestones/7","html_url":"https://github.com/godotengine/godot/milestone/7","labels_url":"https://api.github.com/repos/godotengine/godot/milestones/7/labels","id":2529217,"node_id":"MDk6TWlsZXN0b25lMjUyOTIxNw==","number":7,"title":"3.1","description":"","creator":{"login":"akien-mga","id":4701338,"node_id":"MDQ6VXNlcjQ3MDEzMzg=","avatar_url":"https://avatars0.githubusercontent.com/u/4701338?v=4","gravatar_id":"","url":"https://api.github.com/users/akien-mga","html_url":"https://github.com/akien-mga","followers_url":"https://api.github.com/users/akien-mga/followers","following_url":"https://api.github.com/users/akien-mga/following{/other_user}","gists_url":"https://api.github.com/users/akien-mga/gists{/gist_id}","starred_url":"https://api.github.com/users/akien-mga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akien-mga/subscriptions","organizations_url":"https://api.github.com/users/akien-mga/orgs","repos_url":"https://api.github.com/users/akien-mga/repos","events_url":"https://api.github.com/users/akien-mga/events{/privacy}","received_events_url":"https://api.github.com/users/akien-mga/received_events","type":"User","site_admin":false},"open_issues":1061,"closed_issues":2941,"state":"open","created_at":"2017-05-18T13:33:56Z","updated_at":"2018-09-03T12:28:21Z","due_on":null,"closed_at":null},"comments":111,"created_at":"2017-08-22T14:13:46Z","updated_at":"2018-09-03T13:47:45Z","closed_at":"2018-09-03T10:16:58Z","author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/godotengine/godot/pulls/10546","html_url":"https://github.com/godotengine/godot/pull/10546","diff_url":"https://github.com/godotengine/godot/pull/10546.diff","patch_url":"https://github.com/godotengine/godot/pull/10546.patch"},"body":"This PR uses [ICU](http://site.icu-project.org/) and [HarfBuzz](https://www.freedesktop.org/wiki/Software/HarfBuzz/) libraries, to implement rendering of bi-direction text, complex scripts and OpenType typographic features.\r\n\r\n**Thirdparty libs:**\r\nHarfBuzz (full lib except non-relevant backends and UCDN)\r\nICU4C (\"common\" library, unicode base data and break iterator data)\r\n\r\n**Implements:**\r\n`TextLayout` class to layout paragraph of rich text. Provides bidirectional analysis and reordering, cursor positioning (split cursors for mixed directional text), hit testing, justification, line wrapping.\r\nIt can be used to layout text and embedded objects (images, spans and tables with nested layouts) in a single flow.\r\n`TextLayout` content items `TextLayoutItem*`:\r\n`TextLayoutItemText` - text with attributes.\r\n`TextLayoutItemImage` - embedded image.\r\n`TextLayoutItemSpan` - embedded `TextLayout`.\r\n`TextLayoutItemTable` - simple embedded table with `TextLayout`s.\r\n\r\n`TextLayoutRect` - control that displays `TextLayout`\r\n\r\n`TextHitInfo` - `TextLayout` hit test result, represents a character position, position where new text is inserted into the layout, leading and trailing edges.\r\n\r\n**Changes:**\r\n`Font`/`DynamicFont`: adds methods to provide direct access to font glyphs for `TextLayout` and embedded 167 byte 'font' (![font5_7gf](https://user-images.githubusercontent.com/7645683/32965452-2e5a7c5c-cbdf-11e7-8064-0cc0bebb5543.png)) to do render hex code boxes (![hex](https://user-images.githubusercontent.com/7645683/32965802-6fe7e366-cbe0-11e7-9681-67483dacc79c.png)) in place of missing chars. No breaking changes.\r\n\r\n![editor_demo](https://user-images.githubusercontent.com/7645683/32894439-7cccc084-cae5-11e7-88b7-b65e950e213d.png)\r\n\r\n**Demo project:**\r\n[BidiTest.zip](https://github.com/godotengine/godot/files/1485449/BidiTest.zip)\r\n\r\n### Related:\r\n#3081, #9961, #982"},"comment":{"url":"https://api.github.com/repos/godotengine/godot/issues/comments/418120709","html_url":"https://github.com/godotengine/godot/pull/10546#issuecomment-418120709","issue_url":"https://api.github.com/repos/godotengine/godot/issues/10546","id":418120709,"node_id":"MDEyOklzc3VlQ29tbWVudDQxODEyMDcwOQ==","user":{"login":"MoustafaC","id":4623254,"node_id":"MDQ6VXNlcjQ2MjMyNTQ=","avatar_url":"https://avatars1.githubusercontent.com/u/4623254?v=4","gravatar_id":"","url":"https://api.github.com/users/MoustafaC","html_url":"https://github.com/MoustafaC","followers_url":"https://api.github.com/users/MoustafaC/followers","following_url":"https://api.github.com/users/MoustafaC/following{/other_user}","gists_url":"https://api.github.com/users/MoustafaC/gists{/gist_id}","starred_url":"https://api.github.com/users/MoustafaC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MoustafaC/subscriptions","organizations_url":"https://api.github.com/users/MoustafaC/orgs","repos_url":"https://api.github.com/users/MoustafaC/repos","events_url":"https://api.github.com/users/MoustafaC/events{/privacy}","received_events_url":"https://api.github.com/users/MoustafaC/received_events","type":"User","site_admin":false},"created_at":"2018-09-03T13:47:45Z","updated_at":"2018-09-03T13:47:45Z","author_association":"NONE","body":"But as @bruvzg has stated:\r\n\r\n>Single line IS a paragraph and DO require layout. There's simply no such thing as plain text.\r\n\r\nThis only becomes obvious when you start looking into non-latin scripts. Please read the above linked article on this topic."}}
{"actor":{"display_login":"MoustafaC"}}