////////////
//
// subscript superscript
//
////////////
// use this Custom Function to convert subscript and superscript tagged values in your database text
// a font that supports all of the values below must be used...e.g. DejaVu Sans (https://sourceforge.net/projects/dejavu/)
Function (stringvar inputText);
////
// settings
////
// set these next four values to the separators used in your code
stringvar subS:= '<sub>'; // beginning of a subscript
stringvar subE:= '</sub>'; // end of a subscript
stringvar supS:= '<sup>'; // beginning of a superscript
stringvar supE:= '</sup>'; // end of a superscript
////
// the syntax below may need to be changed depending on the characters in your database
////
stringvar output:= '';
numbervar i:= 0;
// this part deals with subscript
stringvar array sa:= split(inputText, subS);
while i < ubound(sa) do (
i:= i + 1;
stringvar t:= sa[i];
if instr(t, subE) > 0 then (
stringvar t1:= split(t,subE)[1];
// note no sub A (upper case) yet
t1:= replace(t1, 'A', 'ₐ'); t1:= replace(t1, '0041', 'ₐ');
t1:= replace(t1, 'a', 'ₐ'); t1:= replace(t1, '0061', 'ₐ'); t1:= replace(t1, '2090', 'ₐ');
// note no sub E (upper case) yet
t1:= replace(t1, 'E', 'ₑ'); t1:= replace(t1, '0045', 'ₑ');
t1:= replace(t1, 'e', 'ₑ'); t1:= replace(t1, '0065', 'ₑ'); t1:= replace(t1, '2091', 'ₑ');
t1:= replace(t1, '0259', 'ₔ'); // sub schwa
// note no sub H (upper case) yet
t1:= replace(t1, 'H', 'ₕ'); t1:= replace(t1, '0048', 'ₕ');
t1:= replace(t1, 'h', 'ₕ'); t1:= replace(t1, '0068', 'ₕ'); t1:= replace(t1, '2095', 'ₕ');
// note no sub K (upper case) yet
t1:= replace(t1, 'K', 'ₖ'); t1:= replace(t1, '004B', 'ₖ');
t1:= replace(t1, 'k', 'ₖ'); t1:= replace(t1, '006B', 'ₖ'); t1:= replace(t1, '2096', 'ₖ');
// note no sub L (upper case) yet
t1:= replace(t1, 'L', 'ₗ'); t1:= replace(t1, '004C', 'ₗ');
t1:= replace(t1, 'l', 'ₗ'); t1:= replace(t1, '006C', 'ₗ'); t1:= replace(t1, '2097', 'ₗ');
// note no sub M (upper case) yet
t1:= replace(t1, 'M', 'ₘ'); t1:= replace(t1, '004D', 'ₘ');
t1:= replace(t1, 'm', 'ₘ'); t1:= replace(t1, '006D', 'ₘ'); t1:= replace(t1, '2098', 'ₘ');
// note no sub N (upper case) yet
t1:= replace(t1, 'N', 'ₙ'); t1:= replace(t1, '004E', 'ₙ');
t1:= replace(t1, 'n', 'ₙ'); t1:= replace(t1, '006E', 'ₙ'); t1:= replace(t1, '2099', 'ₙ');
// note no sub O (upper case) yet
t1:= replace(t1, 'O', 'ₒ'); t1:= replace(t1, '004F', 'ₒ');
t1:= replace(t1, 'o', 'ₒ'); t1:= replace(t1, '006F', 'ₒ'); t1:= replace(t1, '2092', 'ₒ');
// note no sub P (upper case) yet
t1:= replace(t1, 'P', 'ₚ'); t1:= replace(t1, '0050', 'ₚ');
t1:= replace(t1, 'p', 'ₚ'); t1:= replace(t1, '0070', 'ₚ'); t1:= replace(t1, '209A', 'ₚ');
// note no sub S (upper case) yet
t1:= replace(t1, 'S', 'ₛ'); t1:= replace(t1, '0053', 'ₛ');
t1:= replace(t1, 's', 'ₛ'); t1:= replace(t1, '0073', 'ₛ'); t1:= replace(t1, '209B', 'ₛ');
// note no sub T (upper case) yet
t1:= replace(t1, 'T', 'ₜ'); t1:= replace(t1, '0054', 'ₜ');
t1:= replace(t1, 't', 'ₜ'); t1:= replace(t1, '0074', 'ₜ'); t1:= replace(t1, '209C', 'ₜ');
// note no sub X (upper case) yet
t1:= replace(t1, 'X', 'ₓ'); t1:= replace(t1, '0058', 'ₓ');
t1:= replace(t1, 'x', 'ₓ'); t1:= replace(t1, '0078', 'ₓ'); t1:= replace(t1, '2093', 'ₓ');
t1:= replace(t1, '0', '₀'); t1:= replace(t1, '0030', '₀'); // sub 0
t1:= replace(t1, '1', '₁'); t1:= replace(t1, '0031', '₁'); // sub 1
t1:= replace(t1, '2', '₂'); t1:= replace(t1, '0032', '₂'); // sub 2
t1:= replace(t1, '3', '₃'); t1:= replace(t1, '0033', '₃'); // sub 3
t1:= replace(t1, '4', '₄'); t1:= replace(t1, '0034', '₄'); // sub 4
t1:= replace(t1, '5', '₅'); t1:= replace(t1, '0035', '₅'); // sub 5
t1:= replace(t1, '6', '₆'); t1:= replace(t1, '0036', '₆'); // sub 6
t1:= replace(t1, '7', '₇'); t1:= replace(t1, '0037', '₇'); // sub 7
t1:= replace(t1, '8', '₈'); t1:= replace(t1, '0038', '₈'); // sub 8
t1:= replace(t1, '9', '₉'); t1:= replace(t1, '0039', '₉'); // sub 9
t1:= replace(t1, '+', '₊'); t1:= replace(t1, '002B', '₊'); // sub +
t1:= replace(t1, '-', '₋'); t1:= replace(t1, '002D', '₋'); // sub -
t1:= replace(t1, '=', '₌'); t1:= replace(t1, '003D', '₌'); // sub =
t1:= replace(t1, '(', '₍'); t1:= replace(t1, '0028', '₍'); // sub left parenthesis
t1:= replace(t1, ')', '₎'); t1:= replace(t1, '0029', '₎'); // sub right parenthesis
t:= t1 + split(t,subE)[2];
);
output:= output + t
);
// this part deals with superscript
inputText:= output;
i:= 0;
output:= '';
sa:= split(inputText, supS);
while i < ubound(sa) do (
i:= i + 1;
stringvar t:= sa[i];
if instr(t, supE) > 0 then (
stringvar t1:= split(t,supE)[1];
t1:= replace(t1, 'A', 'ᴬ'); t1:= replace(t1, '0041', 'ᴬ'); t1:= replace(t1, '1D2C', 'ᴬ');
t1:= replace(t1, 'a', 'ᵃ'); t1:= replace(t1, '1D43', 'ⁱ');
t1:= replace(t1, 'B', 'ᴮ'); t1:= replace(t1, '0042', 'ᴬ'); t1:= replace(t1, '1D2E', 'ᴮ');
t1:= replace(t1, 'b', 'ᵇ'); t1:= replace(t1, '1D47', 'ᵇ');
// note no sup C (upper case) yet
t1:= replace(t1, 'C', 'ᶜ'); t1:= replace(t1, '0043', 'ᶜ'); t1:= replace(t1, '1D9C', 'ᶜ');
t1:= replace(t1, 'c', 'ᶜ'); t1:= replace(t1, '0063', 'ᶜ');
t1:= replace(t1, 'D', 'ᴰ'); t1:= replace(t1, '0044', 'ᴰ'); t1:= replace(t1, '1D30', 'ᴰ');
t1:= replace(t1, 'd', 'ᵈ'); t1:= replace(t1, '1D48', 'ᵈ');
t1:= replace(t1, 'E', 'ᴱ'); t1:= replace(t1, '0045', 'ᴱ'); t1:= replace(t1, '1D31', 'ᴱ');
t1:= replace(t1, 'e', 'ᵉ'); t1:= replace(t1, '0065', 'ᵉ'); t1:= replace(t1, '1D49', 'ᵉ');
// note no sup F (upper case) yet
t1:= replace(t1, 'F', 'ᶠ'); t1:= replace(t1, '0046', 'ᶠ');
t1:= replace(t1, 'f', 'ᶠ'); t1:= replace(t1, '0066', 'ᶠ'); t1:= replace(t1, '1DA0', 'ᶠ');
t1:= replace(t1, 'G', 'ᴳ'); t1:= replace(t1, '0047', 'ᴳ'); t1:= replace(t1, '1D33', 'ᴳ');
t1:= replace(t1, 'g', 'ᵍ'); t1:= replace(t1, '0067', 'ᵍ'); t1:= replace(t1, '1D4S', 'ᵍ');
t1:= replace(t1, 'H', 'ᴴ'); t1:= replace(t1, '0048', 'ᴴ'); t1:= replace(t1, '1D34', 'ᴴ');
t1:= replace(t1, 'h', 'ʰ'); t1:= replace(t1, '0068', 'ʰ'); t1:= replace(t1, '02B0', 'ʰ');
t1:= replace(t1, 'I', 'ᴵ'); t1:= replace(t1, '0049', 'ᴵ'); t1:= replace(t1, '1D35', 'ᴵ');
t1:= replace(t1, 'i', 'ⁱ'); t1:= replace(t1, '0069', 'ⁱ'); t1:= replace(t1, '2071', 'ⁱ');
t1:= replace(t1, 'J', 'ᴶ'); t1:= replace(t1, '004A', 'ᴶ'); t1:= replace(t1, '1D36', 'ᴶ');
t1:= replace(t1, 'j', 'ʲ'); t1:= replace(t1, '006A', 'ʲ'); t1:= replace(t1, '02B2', 'ʲ');
t1:= replace(t1, 'K', 'ᴷ'); t1:= replace(t1, '004B', 'ᴷ'); t1:= replace(t1, '1D37', 'ᴷ');
t1:= replace(t1, 'k', 'ᵏ'); t1:= replace(t1, '006B', 'ᵏ'); t1:= replace(t1, '1D4F', 'ᵏ');
t1:= replace(t1, 'L', 'ᴸ'); t1:= replace(t1, '004C', 'ᴸ'); t1:= replace(t1, '1D38', 'ᴸ');
t1:= replace(t1, 'l', 'ˡ'); t1:= replace(t1, '006C', 'ˡ'); t1:= replace(t1, '02E1', 'ˡ');
t1:= replace(t1, 'M', 'ᴹ'); t1:= replace(t1, '004D', 'ᴹ'); t1:= replace(t1, '1D39', 'ᴹ');
t1:= replace(t1, 'm', 'ᵐ'); t1:= replace(t1, '006D', 'ᵐ'); t1:= replace(t1, '1D50', 'ᵏ');
t1:= replace(t1, 'N', 'ᴺ'); t1:= replace(t1, '004E', 'ᴺ'); t1:= replace(t1, '1D3A', 'ᴺ');
t1:= replace(t1, 'n', 'ⁿ'); t1:= replace(t1, '006E', 'ⁿ'); t1:= replace(t1, '207F', 'ᵏ');
t1:= replace(t1, 'O', 'ᴼ'); t1:= replace(t1, '004F', 'ᴼ'); t1:= replace(t1, '1D3C', 'ᴼ');
t1:= replace(t1, 'o', 'ᵒ'); t1:= replace(t1, '006F', 'ᵒ'); t1:= replace(t1, '1D52', 'ᵒ');
t1:= replace(t1, 'P', 'ᴾ'); t1:= replace(t1, '0050', 'ᴾ'); t1:= replace(t1, '1D3E', 'ᴾ');
t1:= replace(t1, 'p', 'ᵖ'); t1:= replace(t1, '0070', 'ᵖ'); t1:= replace(t1, '1D56', 'ᵖ');
// note no sup Q (upper case) yet
t1:= replace(t1, 'Q', 'Q'); t1:= replace(t1, '0051', 'Q');
// note no sup q (lower case) yet
t1:= replace(t1, 'q', 'q'); t1:= replace(t1, '0071', 'q');
t1:= replace(t1, 'R', 'ᴿ'); t1:= replace(t1, '0052', 'ᴿ'); t1:= replace(t1, '1D3F', 'ᴿ');
t1:= replace(t1, 'r', 'ʳ'); t1:= replace(t1, '0072', 'ʳ'); t1:= replace(t1, '02B3', 'ʳ');
// note no sup S (upper case)
t1:= replace(t1, 'S', 'ˢ'); t1:= replace(t1, '0053', 'ˢ');
t1:= replace(t1, 's', 'ˢ'); t1:= replace(t1, '0073', 'ˢ'); t1:= replace(t1, '02E2', 'ˢ');
t1:= replace(t1, 'T', 'ᵀ'); t1:= replace(t1, '0054', 'ᵀ'); t1:= replace(t1, '1D40', 'ᵀ');
t1:= replace(t1, 't', 'ᵗ'); t1:= replace(t1, '0074', 'ᵗ'); t1:= replace(t1, '1D57', 'ʳᵗ');
t1:= replace(t1, 'U', 'ᵁ'); t1:= replace(t1, '0055', 'ᵁ'); t1:= replace(t1, '1D41', 'ᵁ');
t1:= replace(t1, 'u', 'ᵘ'); t1:= replace(t1, '0075', 'ᵘ'); t1:= replace(t1, '1D58', 'ᵘ');
// note no sup V (upper case) yet
t1:= replace(t1, 'V', 'ᵛ'); t1:= replace(t1, '0056', 'ᵛ');
t1:= replace(t1, 'v', 'ᵛ'); t1:= replace(t1, '0072', 'ᵛ'); t1:= replace(t1, '02B3', 'ᵛ');
t1:= replace(t1, 'W', 'ᵂ'); t1:= replace(t1, '0057', 'ᵂ'); t1:= replace(t1, '1D42', 'ᵂ');
t1:= replace(t1, 'w', 'ʷ'); t1:= replace(t1, '0077', 'ʷ'); t1:= replace(t1, '02B7', 'ʷ');
// note no sup X (upper case) yet
t1:= replace(t1, 'X', 'ˣ'); t1:= replace(t1, '0058', 'ˣ');
t1:= replace(t1, 'x', 'ˣ'); t1:= replace(t1, '0078', 'ˣ'); t1:= replace(t1, '02E3', 'ˣ');
// note no sup Y (upper case) yet
t1:= replace(t1, 'Y', 'ʸ'); t1:= replace(t1, '0059', 'ʸ');
t1:= replace(t1, 'y', 'ʸ'); t1:= replace(t1, '0079', 'ʸ'); t1:= replace(t1, '02B8', 'ʸ');
// note no sup Z (upper case) yet
t1:= replace(t1, 'Z', 'ᶻ'); t1:= replace(t1, '005A', 'ᶻ');
t1:= replace(t1, 'z', 'ᶻ'); t1:= replace(t1, '007A', 'ᶻ'); t1:= replace(t1, '1DBB', 'ʳ');
t1:= replace(t1, '0', '⁰'); t1:= replace(t1, '0030', '⁰');
t1:= replace(t1, '1', '¹'); t1:= replace(t1, '0031', '¹');
t1:= replace(t1, '2', '²'); t1:= replace(t1, '0032', '²');
t1:= replace(t1, '3', '³'); t1:= replace(t1, '0033', '³');
t1:= replace(t1, '4', '⁴'); t1:= replace(t1, '0034', '⁴');
t1:= replace(t1, '5', '⁵'); t1:= replace(t1, '0035', '⁵');
t1:= replace(t1, '6', '⁶'); t1:= replace(t1, '0036', '⁶');
t1:= replace(t1, '7', '⁷'); t1:= replace(t1, '0037', '⁷');
t1:= replace(t1, '8', '⁸'); t1:= replace(t1, '0038', '⁸');
t1:= replace(t1, '9', '⁹'); t1:= replace(t1, '0039', '⁹');
t1:= replace(t1, '+', '⁺'); t1:= replace(t1, '002B', '⁺');
t:= t1 + split(t,supE)[2];
);
output:= output + t
);
output
SubscriptSuperscript('The human body is up to 75% H2O. O2 accounts for about 20% of our air. Eight is 23. This is the Nth time. That was the 3rd.')
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
10 | |
10 | |
9 | |
8 | |
7 | |
7 | |
7 | |
7 | |
6 |