diff --git a/unicodedomino.sty b/unicodedomino.sty
index 98df2c499e5e57dce22f886d8a407ce4985ab3da..060778466e04d2547a3adf20cbd068304926d980 100644
--- a/unicodedomino.sty
+++ b/unicodedomino.sty
@@ -59,6 +59,8 @@
 }%
 
 % collect octet tokens, trim them and pass them on to handler
+\ifx\UTFviii@two@octets@combine\@undefined%
+ % v1.2h 2019/07/09, or older
  \long\def\UTFviii@two@octets#1#2{%
   \ifx\protect\@typeset@protect%
    \edef\unicodedomino@tmp{#1\unicodedomino@last{\string#2}}%
@@ -86,6 +88,36 @@
    \string#1\string#2\string#3\string#4%
   \fi%
  }%
+\else%
+ % v1.2i 2019/07/09, or newer
+ \long\def\UTFviii@two@octets#1#2{%
+  \ifx\protect\@typeset@protect%
+   \edef\unicodedomino@tmp{#1\unicodedomino@last{\string#2}}%
+   \expandafter\unicodedomino@octets\unicodedomino@tmp\empty%
+  \else%
+   % protected, just write the original multibyte character
+   \string#1\string#2%
+  \fi%
+ }%
+ \long\def\UTFviii@three@octets#1#2#3{%
+  \ifx\protect\@typeset@protect%
+   \edef\unicodedomino@tmp{#1\unicodedomino@last{\string#2}\unicodedomino@last{\string#3}}%
+   \expandafter\unicodedomino@octets\unicodedomino@tmp\empty%
+  \else%
+   % protected, just write the original multibyte character
+   \string#1\string#2\string#3%
+  \fi%
+ }%
+ \long\def\UTFviii@four@octets#1#2#3#4{%
+  \ifx\protect\@typeset@protect%
+   \edef\unicodedomino@tmp{#1\unicodedomino@last{\string#2}\unicodedomino@last{\string#3}\unicodedomino@last{\string#4}}%
+   \expandafter\unicodedomino@octets\unicodedomino@tmp\empty%
+  \else%
+   % protected, just write the original multibyte character
+   \string#1\string#2\string#3\string#4%
+  \fi%
+ }%
+\fi%
 
 % handle trimmed octets
 \def\unicodedomino@octets#1\empty{%