我需要让用户能够在允许文本输入的任何地方输入一小组特殊字符。字符名称为:
- 对于所有。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。存在
- 不存在。。。。。。。。。。。。。。。。。。。。。。。。。。。大写PI
- 资本西格玛。。。。。。。。。。。。。。。。。。。。。。的子集
- …………的适当子集。。。。。。。。。。。。。的超集
- ……的适当超集。。。。。。。。。暗示
- 等效。。。。。。。。。。。。。。。。。。。。。。。。。不是
- 以及。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。或
编辑
根据两份意见的要求,我正在澄清我的要求。
我希望这些字符在对象编辑器中可供用户输入,在对象读取器中可作为输出(作为符号)使用。通常,这些阅读器将显示对象的描述或定义,符号将构成该描述/定义的一部分。用户将输入它们作为描述或定义对象任务的一部分。读者可以在各种媒体中——网页、自定义对象读者、屏幕内外阅读的文本文档。
我想在我的应用程序中提供这些设施,而不管用户拥有什么机器。我特别希望提供它们,而不管:
- 平台
- 特定机器上可用的字体
- 区域设置-键盘和操作系统设置
@雷德瓦尔德编辑后的答案为我的两部分需求提供了完整的答案。我可能会接受他对我问题的回答。他的回答中我需要进一步调查的部分是"2。检测输出设备使用的输出编码。在此检测中包括对存在哪些字体的检查。"我不知道这项任务涉及到什么
结束编辑
"独立于字体","独立于语言环境"。我想这意味着您希望将自己限制为仅ASCII字符集。在这种情况下,我建议以C/C++字符串的方式使用转义符。例如,如果转义符是"?",你可以这样编码特殊的符号:
- ?有孔虫
- ?E存在
- ?N不存在
- ?P大写PI
- ?S资本西格玛
- <的子集
等等。除非你想成为W V Quine*那样的人,否则你也应该定义??意思是"?"。
编辑:按评论要求:
这涉及到输入端。如果您确实想将特殊符号显示为特殊符号,则必须以Unicode输出。因此,在执行输出时,您必须从该表示转换为Unicode,或者在输入时进行转换并以Unicode记录字符串。
编辑:根据评论要求:
我不一定想把自己限制在ASCII字符集。我确实希望字符被输入和显示,即使相关的计算机没有(例如)符号字体
- 将字符串存储在Unicode编码中
- 检测输出设备使用的输出编码。在此检测中包括对存在哪些字体的检查
- 如果输出编码可以支持输出所有必需的特殊字符,请将输出代码从Unicode转换为输出设备使用的编码。否则,让输出代码使用与输入相同的转义序列来编写特殊字符
*哲学家W V Quine对他的机械打字机进行了著名的改造,用逻辑符号(包括问号)取代了一些打字机。当被问及"你没有错过问号吗?"时,他回答道:"好吧,你知道,我处理的是肯定的。"