A long-lived project that still receives updates
[Unicode 16.0.0][Emoji 16.0] Returns the name of a Unicode code point sequence, if one exists
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Unicode::SequenceName [version] [ci]

Returns the name of a Unicode codepoint sequence (= more than one codepoint involved), if one exists.

Unicode version: 16.0.0 (September 2024)

Emoji version: 16.0 (September 2024)

IVD version: 2022-09-13 (September 2022)

Supported Rubies: 3.3, 3.2, 3.1, 3.0

Old Rubies which might still work: 2.X

Usage

require "unicode/sequence_name"

Unicode::SequenceName.of "‼︎" # => "DOUBLE EXCLAMATION MARK (text style)"
Unicode::SequenceName.of "㓟︀" # => "CJK COMPATIBILITY IDEOGRAPH-2F81F"
Unicode::SequenceName.of "င︀" # => "MYANMAR LETTER NGA (dotted form)"
Unicode::SequenceName.of "நி" # => "TAMIL SYLLABLE NI"
Unicode::SequenceName.of "🇺🇳" # => "Flag: UNITED NATIONS"
Unicode::SequenceName.of "🏴󠁧󠁢󠁳󠁣󠁴󠁿" # => "SCOTLAND"
Unicode::SequenceName.of "🧑‍🦱" # => "PERSON: CURLY HAIR"
Unicode::SequenceName.of "👨‍🍼" # => "MAN FEEDING BABY"
Unicode::SequenceName.of "❤️‍🔥" # => "HEART ON FIRE"
Unicode::SequenceName.of "🫱🏻‍🫲🏾" # => "HANDSHAKE: LIGHT SKIN TONE, MEDIUM-DARK SKIN TONE"
Unicode::SequenceName.of "🐦‍⬛" # => "BLACK BIRD"
Unicode::SequenceName.of "🙂‍↔️" # => "HEAD SHAKING HORIZONTALLY"
Unicode::SequenceName.of "‘︁" # => "LEFT SINGLE QUOTATION MARK (right-justified fullwidth form)"

Names for singular codepoints are not included, but you can use unicode-name for that purpose. This is how you could use both libraries together to get the most relevant name of a character:

name = Unicode::SequenceName.of(char) || Unicode::Name.readable(char)

Also See

  • uniscribe - cli utility that makes use of unicode_sequence-name
  • unicode-x - more Unicode related micro libraries
  • unicode-name.js - JavaScript implementation of name and sequence_name

MIT License