{"action":"opened","number":1543,"pull_request":{"url":"https://api.github.com/repos/Mudlet/Mudlet/pulls/1543","id":167145830,"html_url":"https://github.com/Mudlet/Mudlet/pull/1543","diff_url":"https://github.com/Mudlet/Mudlet/pull/1543.diff","patch_url":"https://github.com/Mudlet/Mudlet/pull/1543.patch","issue_url":"https://api.github.com/repos/Mudlet/Mudlet/issues/1543","number":1543,"state":"open","locked":false,"title":"Enhance: add ability to set any glyph as a room symbol","user":{"login":"SlySven","id":6163092,"avatar_url":"https://avatars3.githubusercontent.com/u/6163092?v=4","gravatar_id":"","url":"https://api.github.com/users/SlySven","html_url":"https://github.com/SlySven","followers_url":"https://api.github.com/users/SlySven/followers","following_url":"https://api.github.com/users/SlySven/following{/other_user}","gists_url":"https://api.github.com/users/SlySven/gists{/gist_id}","starred_url":"https://api.github.com/users/SlySven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SlySven/subscriptions","organizations_url":"https://api.github.com/users/SlySven/orgs","repos_url":"https://api.github.com/users/SlySven/repos","events_url":"https://api.github.com/users/SlySven/events{/privacy}","received_events_url":"https://api.github.com/users/SlySven/received_events","type":"User","site_admin":false},"body":"#### Brief overview of PR changes/additions\r\nI have long wanted to use more than just ASCII letters for room symbols - this commit adds support for any glyph to be used and more than one - although there is a trade off in fitting the text into a square or round room symbol which means longer strings have to be smaller to fit.  Each different symbol is resized to fit and this allows for the use of symbols with combining diacriticals and those from beyond the BMP.\r\n\r\nControls are added to the profile preference that allows a specific font to be used for room symbols - so a Server/Crowd source map could bundle up one that includes all the symbols needed; and there is also a check-box option to force just that font to be used if that is important.  However if a map is shared it is not impossible for the end-using system not to have a particular font or indeed any font with a glyph in.  \r\n\r\nTherefore there is a secondary dialog available on the \"Mapper\" tab of the \"Profile Preferences\" that can be called up and which gives an informative display of what symbols are used where and from what Unicode codepoints they are composed as well as whether the current system can display each symbol in either the specified font or as a fall-back, any font available to a Qt Application - for simplicity a colour coded icon is displayed against each line in the table of symbols indicating whether it can be found in the selected font (![dialog-ok-apply](https://user-images.githubusercontent.com/6163092/35806235-b906d2b2-0a76-11e8-839e-664e48f67512.png)); only in another font (![dialog-warning](https://user-images.githubusercontent.com/6163092/35806236-b96dd4e4-0a76-11e8-98fe-de5c0f25e8fc.png)) or is missing altogether on the system (![dialog-error](https://user-images.githubusercontent.com/6163092/35806233-b8a90f7e-0a76-11e8-8b3f-e9ba041a4db0.png)).  As this responds interactively as the selected font is changed it should enable the user to find a suitable choice for their case.\r\n\r\n#### Motivation for adding to Mudlet\r\nI want to be able to decorate my maps with the fine range of glyphs from George Douros' Public Domain [Symbola](http://users.teilar.gr/~g1951d/Symbola.zip) font.\r\n\r\n#### Other info (issues closed, discussion etc)\r\nThe revised data ideally would be stored directly into the Mudlet binary map format and I have incremented the version number to __19__ to support this feature - however I have been able to provide a fall-back that silently uses the map and room user data areas and leave maps in the current default __18__ format able to be read with the current versions of Mudlet without issue if only the currently supported symbols (\"letters\") are used - should a Mudlet version with this PR included set a symbol that cannot be displayed in the current versions in existence they will display a `?` instead.  Similarly, going forward from this PR the lua `getRoomChar` and `setRoomChar` should be deprecated, however they will still work with the previous range of characters - although both current versions and this code going forward will return a '?' for a room symbol that cannot be encoded as a single byte, additionally this code will include a second error message advising the use of the replacement `getRoomSymbol` which returns a UTF-8 encoded string.  The companion `setRoomSymbol` will also accept an empty string (or a space) to clear a room symbol (as will the revised `setRoomChar`) which seems to have been a previous _undocumented software feature_ i.e. it was not possible to clear a room symbol from a lua script... 😮 ","created_at":"2018-02-05T13:37:39Z","updated_at":"2018-02-05T13:37:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"milestone":null,"commits_url":"https://api.github.com/repos/Mudlet/Mudlet/pulls/1543/commits","review_comments_url":"https://api.github.com/repos/Mudlet/Mudlet/pulls/1543/comments","review_comment_url":"https://api.github.com/repos/Mudlet/Mudlet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Mudlet/Mudlet/issues/1543/comments","statuses_url":"https://api.github.com/repos/Mudlet/Mudlet/statuses/3312fb60c9de251d5421392ff3d40892ccad8444","head":{"label":"SlySven:Enhance_better2DMapRoomIdAndNonAsciiRoomSymbols","ref":"Enhance_better2DMapRoomIdAndNonAsciiRoomSymbols","sha":"3312fb60c9de251d5421392ff3d40892ccad8444","user":{"login":"SlySven","id":6163092,"avatar_url":"https://avatars3.githubusercontent.com/u/6163092?v=4","gravatar_id":"","url":"https://api.github.com/users/SlySven","html_url":"https://github.com/SlySven","followers_url":"https://api.github.com/users/SlySven/followers","following_url":"https://api.github.com/users/SlySven/following{/other_user}","gists_url":"https://api.github.com/users/SlySven/gists{/gist_id}","starred_url":"https://api.github.com/users/SlySven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SlySven/subscriptions","organizations_url":"https://api.github.com/users/SlySven/orgs","repos_url":"https://api.github.com/users/SlySven/repos","events_url":"https://api.github.com/users/SlySven/events{/privacy}","received_events_url":"https://api.github.com/users/SlySven/received_events","type":"User","site_admin":false},"repo":{"id":22490921,"name":"Mudlet","full_name":"SlySven/Mudlet","owner":{"login":"SlySven","id":6163092,"avatar_url":"https://avatars3.githubusercontent.com/u/6163092?v=4","gravatar_id":"","url":"https://api.github.com/users/SlySven","html_url":"https://github.com/SlySven","followers_url":"https://api.github.com/users/SlySven/followers","following_url":"https://api.github.com/users/SlySven/following{/other_user}","gists_url":"https://api.github.com/users/SlySven/gists{/gist_id}","starred_url":"https://api.github.com/users/SlySven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SlySven/subscriptions","organizations_url":"https://api.github.com/users/SlySven/orgs","repos_url":"https://api.github.com/users/SlySven/repos","events_url":"https://api.github.com/users/SlySven/events{/privacy}","received_events_url":"https://api.github.com/users/SlySven/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/SlySven/Mudlet","description":"A modern open source MUD client with a graphical user inteface and full built in Lua scripting support for all major platforms.","fork":true,"url":"https://api.github.com/repos/SlySven/Mudlet","forks_url":"https://api.github.com/repos/SlySven/Mudlet/forks","keys_url":"https://api.github.com/repos/SlySven/Mudlet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SlySven/Mudlet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SlySven/Mudlet/teams","hooks_url":"https://api.github.com/repos/SlySven/Mudlet/hooks","issue_events_url":"https://api.github.com/repos/SlySven/Mudlet/issues/events{/number}","events_url":"https://api.github.com/repos/SlySven/Mudlet/events","assignees_url":"https://api.github.com/repos/SlySven/Mudlet/assignees{/user}","branches_url":"https://api.github.com/repos/SlySven/Mudlet/branches{/branch}","tags_url":"https://api.github.com/repos/SlySven/Mudlet/tags","blobs_url":"https://api.github.com/repos/SlySven/Mudlet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SlySven/Mudlet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SlySven/Mudlet/git/refs{/sha}","trees_url":"https://api.github.com/repos/SlySven/Mudlet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SlySven/Mudlet/statuses/{sha}","languages_url":"https://api.github.com/repos/SlySven/Mudlet/languages","stargazers_url":"https://api.github.com/repos/SlySven/Mudlet/stargazers","contributors_url":"https://api.github.com/repos/SlySven/Mudlet/contributors","subscribers_url":"https://api.github.com/repos/SlySven/Mudlet/subscribers","subscription_url":"https://api.github.com/repos/SlySven/Mudlet/subscription","commits_url":"https://api.github.com/repos/SlySven/Mudlet/commits{/sha}","git_commits_url":"https://api.github.com/repos/SlySven/Mudlet/git/commits{/sha}","comments_url":"https://api.github.com/repos/SlySven/Mudlet/comments{/number}","issue_comment_url":"https://api.github.com/repos/SlySven/Mudlet/issues/comments{/number}","contents_url":"https://api.github.com/repos/SlySven/Mudlet/contents/{+path}","compare_url":"https://api.github.com/repos/SlySven/Mudlet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SlySven/Mudlet/merges","archive_url":"https://api.github.com/repos/SlySven/Mudlet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SlySven/Mudlet/downloads","issues_url":"https://api.github.com/repos/SlySven/Mudlet/issues{/number}","pulls_url":"https://api.github.com/repos/SlySven/Mudlet/pulls{/number}","milestones_url":"https://api.github.com/repos/SlySven/Mudlet/milestones{/number}","notifications_url":"https://api.github.com/repos/SlySven/Mudlet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SlySven/Mudlet/labels{/name}","releases_url":"https://api.github.com/repos/SlySven/Mudlet/releases{/id}","deployments_url":"https://api.github.com/repos/SlySven/Mudlet/deployments","created_at":"2014-08-01T01:05:26Z","updated_at":"2017-11-01T08:48:42Z","pushed_at":"2018-02-05T12:54:39Z","git_url":"git://github.com/SlySven/Mudlet.git","ssh_url":"git@github.com:SlySven/Mudlet.git","clone_url":"https://github.com/SlySven/Mudlet.git","svn_url":"https://github.com/SlySven/Mudlet","homepage":null,"size":31894,"stargazers_count":2,"watchers_count":2,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0"},"forks":1,"open_issues":2,"watchers":2,"default_branch":"development"}},"base":{"label":"Mudlet:development","ref":"development","sha":"1c9f45673e8f47d1324c31ea3a1b1ec781ffa417","user":{"login":"Mudlet","id":6158612,"avatar_url":"https://avatars3.githubusercontent.com/u/6158612?v=4","gravatar_id":"","url":"https://api.github.com/users/Mudlet","html_url":"https://github.com/Mudlet","followers_url":"https://api.github.com/users/Mudlet/followers","following_url":"https://api.github.com/users/Mudlet/following{/other_user}","gists_url":"https://api.github.com/users/Mudlet/gists{/gist_id}","starred_url":"https://api.github.com/users/Mudlet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mudlet/subscriptions","organizations_url":"https://api.github.com/users/Mudlet/orgs","repos_url":"https://api.github.com/users/Mudlet/repos","events_url":"https://api.github.com/users/Mudlet/events{/privacy}","received_events_url":"https://api.github.com/users/Mudlet/received_events","type":"Organization","site_admin":false},"repo":{"id":15108812,"name":"Mudlet","full_name":"Mudlet/Mudlet","owner":{"login":"Mudlet","id":6158612,"avatar_url":"https://avatars3.githubusercontent.com/u/6158612?v=4","gravatar_id":"","url":"https://api.github.com/users/Mudlet","html_url":"https://github.com/Mudlet","followers_url":"https://api.github.com/users/Mudlet/followers","following_url":"https://api.github.com/users/Mudlet/following{/other_user}","gists_url":"https://api.github.com/users/Mudlet/gists{/gist_id}","starred_url":"https://api.github.com/users/Mudlet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mudlet/subscriptions","organizations_url":"https://api.github.com/users/Mudlet/orgs","repos_url":"https://api.github.com/users/Mudlet/repos","events_url":"https://api.github.com/users/Mudlet/events{/privacy}","received_events_url":"https://api.github.com/users/Mudlet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Mudlet/Mudlet","description":"A cross-platform, open source, and super fast MUD client with scripting in Lua","fork":false,"url":"https://api.github.com/repos/Mudlet/Mudlet","forks_url":"https://api.github.com/repos/Mudlet/Mudlet/forks","keys_url":"https://api.github.com/repos/Mudlet/Mudlet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Mudlet/Mudlet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Mudlet/Mudlet/teams","hooks_url":"https://api.github.com/repos/Mudlet/Mudlet/hooks","issue_events_url":"https://api.github.com/repos/Mudlet/Mudlet/issues/events{/number}","events_url":"https://api.github.com/repos/Mudlet/Mudlet/events","assignees_url":"https://api.github.com/repos/Mudlet/Mudlet/assignees{/user}","branches_url":"https://api.github.com/repos/Mudlet/Mudlet/branches{/branch}","tags_url":"https://api.github.com/repos/Mudlet/Mudlet/tags","blobs_url":"https://api.github.com/repos/Mudlet/Mudlet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Mudlet/Mudlet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Mudlet/Mudlet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Mudlet/Mudlet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Mudlet/Mudlet/statuses/{sha}","languages_url":"https://api.github.com/repos/Mudlet/Mudlet/languages","stargazers_url":"https://api.github.com/repos/Mudlet/Mudlet/stargazers","contributors_url":"https://api.github.com/repos/Mudlet/Mudlet/contributors","subscribers_url":"https://api.github.com/repos/Mudlet/Mudlet/subscribers","subscription_url":"https://api.github.com/repos/Mudlet/Mudlet/subscription","commits_url":"https://api.github.com/repos/Mudlet/Mudlet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Mudlet/Mudlet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Mudlet/Mudlet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Mudlet/Mudlet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Mudlet/Mudlet/contents/{+path}","compare_url":"https://api.github.com/repos/Mudlet/Mudlet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Mudlet/Mudlet/merges","archive_url":"https://api.github.com/repos/Mudlet/Mudlet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Mudlet/Mudlet/downloads","issues_url":"https://api.github.com/repos/Mudlet/Mudlet/issues{/number}","pulls_url":"https://api.github.com/repos/Mudlet/Mudlet/pulls{/number}","milestones_url":"https://api.github.com/repos/Mudlet/Mudlet/milestones{/number}","notifications_url":"https://api.github.com/repos/Mudlet/Mudlet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Mudlet/Mudlet/labels{/name}","releases_url":"https://api.github.com/repos/Mudlet/Mudlet/releases{/id}","deployments_url":"https://api.github.com/repos/Mudlet/Mudlet/deployments","created_at":"2013-12-11T14:04:21Z","updated_at":"2018-01-30T04:03:55Z","pushed_at":"2018-02-05T10:40:47Z","git_url":"git://github.com/Mudlet/Mudlet.git","ssh_url":"git@github.com:Mudlet/Mudlet.git","clone_url":"https://github.com/Mudlet/Mudlet.git","svn_url":"https://github.com/Mudlet/Mudlet","homepage":"http://mudlet.org","size":28115,"stargazers_count":145,"watchers_count":145,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":83,"mirror_url":null,"archived":false,"open_issues_count":401,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0"},"forks":83,"open_issues":401,"watchers":145,"default_branch":"development"}},"_links":{"self":{"href":"https://api.github.com/repos/Mudlet/Mudlet/pulls/1543"},"html":{"href":"https://github.com/Mudlet/Mudlet/pull/1543"},"issue":{"href":"https://api.github.com/repos/Mudlet/Mudlet/issues/1543"},"comments":{"href":"https://api.github.com/repos/Mudlet/Mudlet/issues/1543/comments"},"review_comments":{"href":"https://api.github.com/repos/Mudlet/Mudlet/pulls/1543/comments"},"review_comment":{"href":"https://api.github.com/repos/Mudlet/Mudlet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Mudlet/Mudlet/pulls/1543/commits"},"statuses":{"href":"https://api.github.com/repos/Mudlet/Mudlet/statuses/3312fb60c9de251d5421392ff3d40892ccad8444"}},"author_association":"OWNER","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":1,"additions":912,"deletions":321,"changed_files":15}}
{"actor":{"display_login":"SlySven"}}