我预先格式化了包含换行符和多空格的字符串,我想将它们附加到文本节点中.
<pre id="bar"></pre>
<script>
var string = "Preformatted"
+ "\n" // \r, \r\n, \n\r or what else?
+ "multispace string";
var text = document.createTextNode(string);
document.getElementById('bar').appendChild(text);
</script>
Run Code Online (Sandbox Code Playgroud)
我试图采用线路断路器:
\n 在所有浏览器中打破行,但在IE(我正在测试7)成为一个空间\r 仅在IE中打破行\r\n 适用于所有浏览器,但在IE中,第二行开头的空间很恐怖\n\r 总而言之,但是在IE中,第一行末尾的空间对于我的布局来说是不可接受的.我无法使用<br>innerHTML,因为IE会折叠多个空格.
jQuery .text(string)具有完全相同的行为.appendChild(createTextNode(string))
如何插入跨浏览器换行符?
最终,如何轻松检测浏览器是否支持\n或\r?
我的问题类似于这个,但有点前进.
在我的Win32程序中,我有一些菜单按钮,其中包含BMP以上的Unicode字符,例如U + 1F5A4(UTF-16代理对0xD83D 0xDDA4).
在Windows 10中,系统字体Segoe UI没有这个字形:它自动替换为字体Segoe UI Symbol中的字形并在按钮中正确显示,这要归功于一个称为字体链接的过程(或字体后退,仍然不清楚)对我来说).
但是在Windows 7中,字体链接会带来一个既没有这个字形的字体,代理对也显示为两个空框▯▯.在Windows XP中使用Tahoma字体也一样.
我想避免这些替换框,通过在分配到按钮之前或之后解析文本,并用一些常见的ASCII字符替换丢失的字形.
我试过GetGlyphOutline,ScriptGetCMap,GetFontUnicodeRanges和GetGlyphIndices,但他们不支持代理对.
我也试过GetCharacterPlacement和Uniscribe ScriptItemize+ ScriptShape支持代理对,但所有这些功能只搜索到HDC(Segoe UI)的基本字体,他们不搜索最终后备字体(Segoe UI符号),这是提供字形.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink 它是我看的地方,但我真的认为系统没有将字体链接到那里.
问题是:如何知道系统字体链接是否产生正确的字形或豆腐盒?
我找到了某种解决方案来复制这段代码并添加最后一个GetCharacterPlacement.
#include <usp10.h>
wchar_t *checkGlyphExist( HWND hwnd, wchar_t *sUnicode, wchar_t *sLimited ) {
// Create metafile
HDC hdc = GetDC( hwnd );
HDC metaFileDC = CreateEnhMetaFile( hdc, NULL, NULL, …Run Code Online (Sandbox Code Playgroud) C 编程新手。
在 gcc 中-std设置了编译的 C 标准,例如gcc -std=c99.
可以知道当前制定的是哪个C标准吗?
c ×2
dialect ×1
font-linking ×1
gcc ×1
javascript ×1
line-breaks ×1
pre ×1
textnode ×1
unicode ×1
winapi ×1