\NeedsTeXFormat{LaTeX2e}[2015/09/07]
\ProvidesExplPackage{utfsym}{2022/04/17}{}{Use TikZ to support icons from Unicode blocks}
%% developed for use in package 'schule' 2016 by Daniel Spittank
%% modified to work with lualatex 2021 by Marei Peischl
%% this package is public domain, CC0

%% - needs ut8 as input encoding
%% - TikZ paths are extracted from Symbola.ttf public domain font by George Douros,
%%   see: http://users.teilar.gr/~g1951d/
%% - supports direct use of unicode symbols
%% - supports textcolor
%% - supports fontsizes
%% - supported Blocks:
%%   - Miscellaneous Symbols and Arrows (2600-26FF)
%%   - Dingbats (2700-27BF)
%%   - Mahjong Tiles (1F000-1F02F)
%%   - Domino Tiles (1F030-1F09F)
%%   - Playing Cards (1F0A0-1F0FF)
%%   - Miscellaneous Symbols and Pictographs (1F300-1F5FF)
%%   - Emoticons / Emoji (1F600-1F64F)
%%   - Transport and Map Symbols (1F680-1F6FF)

\RequirePackage{l3keys2e}

\keys_define:nn {utfsym} {
	create-chars .bool_gset:N = \g__utfsym_create_chars_bool,
	create-chars .default:n = true,
	create-chars .initial:n = true
}

\ProcessKeysOptions{ utfsym }

\ExplSyntaxOff
\RequirePackage{xcolor}
\RequirePackage{tikz}
\RequirePackage{graphicx}

%% command for symbol usage \usym{unicode number}
\newcommand{\usym}[1]{\resizebox{!}{\fontcharht\font`M}{\input{usym#1.tikz}}}

%% command for symbol usage as a picture, scaling by height
%% \usymH{unicode number}{height}
\newcommand{\usymH}[2]{\resizebox{!}{#2}{\input{usym#1.tikz}}}

%% command for symbol usage as a picture, scaling by width
%% \usymW{unicode number}{width}
\newcommand{\usymW}[2]{\resizebox{#2}{!}{\input{usym#1.tikz}}}

%% direct unicode support

\ExplSyntaxOn

\bool_if:NT \g__utfsym_create_chars_bool {
	\cs_if_exist:NTF \DeclareUnicodeCharacter {
		\cs_new:Nn \utfsym_create_char:n {
			\exp_args:Nx \DeclareUnicodeCharacter{\int_to_Hex:n {#1}}{\usym{\int_to_Hex:n {#1}}}
		}
	}{
		\RequirePackage{newunicodechar}
		\cs_new:Nn \utfsym_create_char:n {
			\exp_args:Nx \newunicodechar{\char_generate:nn {#1}{12}}{\usym{\int_to_Hex:n {#1}}}
		}
	}

	\int_step_inline:nnn {126976} {127231} {
		\utfsym_create_char:n {#1}
	}

	\int_step_inline:nnn {127744} {128767} {
		\utfsym_create_char:n {#1}
	}

	\int_step_inline:nnn {9728} {10175} {
		\utfsym_create_char:n {#1}
	}
}
\endinput
