我有一种在我的Android应用程序中使用"monospace"的风格:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
<!-- Customize your theme here. -->
<item name="android:windowNoTitle">true</item>
<item name="android:typeface">monospace</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:itemTextAppearance">@style/MenuText</item>
</style>
<style name="M13Text">
<item name="android:typeface">monospace</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textColorLink">@android:color/holo_red_light</item>
</style>
<style name="MenuText">
<item name="android:typeface">monospace</item>
<item name="android:textColor">@android:color/black</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到棒棒糖到达时,它似乎不再使用Monospace字体了,当我在Android Studio中将API从19翻转到21时,我可以看到它发生了变化.
我用Google搜索并没有找到任何东西,我很欣赏它只是一个化妆品问题,但任何人都有任何想法为什么?
我正在开发一个小网络应用程序。我尝试使用 boxdrawing 字符以一种 ascii 艺术方式显示一些输出。但是,我注意到在 Android 上,空格 ( ) 与其他字符的宽度不同,导致输出丑陋。
我已经把字体作为monospace,甚至尝试了monospace,monospaceCSS 设置。
要了解我在说什么:
请在 Android 和桌面浏览器上打开https://tpgnow.herokuapp.com/CERN。
我尝试过不同的浏览器、平台和设备。它似乎适用于 Win、Mac、Chrome 和 Firefox,也适用于 iOS,但不适用于 Android(Chrome 或 Firefox)。
有没有人有解决这个问题的方法?
我想告诉浏览器使用monospace和sans-serif的字体(通常默认的monospace字体有serifs,默认的sans-serif字体不是等宽字体).除了提供我知道符合我的标准的字体列表之外,有没有办法在CSS中指定它?
我正在使用pre元素来显示一些文本,包括特殊的unicode字符(⚡⚑▶◀⁋).我注意到浏览器渲染这些特殊字符比常规字符更宽,水平占用更多空间.
这可以很容易地看到:https://gist.github.com/968b5c22cce14909cf27 两行都有20个字符,但注意第一行更长(屏幕像素).
是否有一种方法(CSS)强制pre元素(或应用了等宽字体的其他元素)具有真正固定的字符宽度?
我检查了Chrome和Firefox,它们都扩展了特殊字符的宽度.
标题几乎说明了一切:我想monospaced使用 GFM用字体编写一个段落,但没有任何编程语言的语法突出显示。我认为它会是
```txt
Run Code Online (Sandbox Code Playgroud)
或者
```text
Run Code Online (Sandbox Code Playgroud)
或者什么都没有:
```
Run Code Online (Sandbox Code Playgroud)
但没有运气。这甚至可以用 GFM 实现吗?
我已经看到了一些问题,光标在ace编辑器中间隔不正确.问题与字体间距有关,显然解决方案是只使用等宽字体.
这是关于这个问题的另一个问题. ace编辑器光标行为不正确
我的问题可能与使用Bootstrap主题有关,但我不完全确定.
当我打开chrome dev工具并查看ace编辑器中使用的字体时,它说我的Bootstrap模板正在使用字体
input, textarea, input[type="submit"]:focus, div {
outline: 0 none;
font-family: 'Open Sans', sans-serif;
}
Run Code Online (Sandbox Code Playgroud)
如果我加入我的CSS
.ace-editor {
font-family: monospace !important;
}
Run Code Online (Sandbox Code Playgroud)
我仍然遇到光标间距错误的问题,奇怪的是,正在使用的字体看起来与Bootstrap中定义的"Open Sans"完全相同.
在Chrome开发工具中打开,说计算属性是'等宽的',所以应该有些东西可以工作,但事实并非如此.这是它变得非常奇怪的地方.
如果我删除字体项两个.ace-editor和input, textarea...,我得到一个非常好看的字体的作品.转到计算属性,将font-family再次显示为"Open Sans".
所以我试图回答的问题是,当我从Bootstrap中取消textarea条目时,我怎么能弄清楚哪些字体实际上正在被使用?或者为什么在指定时不接受等宽字体.
我有点认为'Open Sans'可能是等宽的,但无论如何,它仍然会引起巨大的麻烦.
据说这里的部分 标准字体:
特别是对于或多或少的标准用户界面元素,每个平台都定义了应该使用的特定字体。Tk 将其中的许多封装成一组标准字体,这些字体始终可用,当然标准小部件也使用这些字体。这有助于抽象出平台差异。
然后在预定义的字体列表中有:
TkFixedFontA standard fixed-width font.
这也与我在这里找到的关于选择等宽、平台独立字体的标准方法一致Tkinter,例如在这个答案中所述。
唉,当我尝试自己做这件事时,就像下面的简单代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
frame = ttk.Frame(root)
style = ttk.Style()
style.configure("Fixed.TButton", font=("TkFixedFont", 16))
button = ttk.Button(text="Some monospaced text, hopefully", style="Fixed.TButton")
frame.grid()
button.grid(sticky="news")
button.configure(text="I don't quite like this font.")
Run Code Online (Sandbox Code Playgroud)
我得到的是这样的:
这对我来说看起来不像是等宽的,所以我检查了在我的平台上到底Tkinter转换TkFixedFont成什么:
from tkinter import font
font.nametofont("TkFixedFont").actual()
Run Code Online (Sandbox Code Playgroud)
答案是:
{'family': 'DejaVu Sans Mono', 'size': 9, 'weight': 'normal', 'slant': 'roman', 'underline': 0, 'overstrike': 0} …Run Code Online (Sandbox Code Playgroud) 我试图在Windows 7上的gvim中获得对runic字符的支持.我在我的Fonts目录中安装了Free Mono和GNU Unifont(它们都支持这个范围)字体,但它们没有出现在字体菜单中,并且gvim给出了我是以下行的无效字体消息:
set guifont=unifont:h12:cANSI
set guifont=GNU_Unifont:h12:cANSI
set guifont=Free_Mono:h12:cANSI
set guifont=Free_Monospaced:h12:cANSI
set guifont=FreeMono:h12:cANSI
etc...
Run Code Online (Sandbox Code Playgroud)
我如何让它工作?我注意到字体都是字体系列的一部分,"Medium",而工作的Ubuntu Mono被标记为"Regular".这有什么不同吗?一般来说,在gvim上更改字体,即使是等宽字体也没有太多运气.
我在 Ubuntu 15.10 上使用 Chrome (47.0.2526.106)。据我所知,“等宽”只是使用“系统”等宽字体的指令(因为不是特定字体)。在 Chrome 设置中,“固定宽度字体”设置为“等宽字体”。然后在我的 Tweek Tool Fonts Monospace 中,我设置了 Courier——但是当一个页面(例如一个简单的错误页面)出现时,我看到的不是 Courier,而是类似于 Ubuntu Mono 的东西,但不完全是这样。Chrome 使用什么字体?它是发送字体,还是在我的系统上使用其他字体?
有时,我需要键入字符列垂直对齐的文本,最简单的方法当然是使用字体家族“等宽字体”,“ Courier”等。
不过,我注意到的是,许多html实体代码字符(表情符号等)并不总是符合此固定字体宽度,但仍比普通字符宽,并且在同一行上“压入”后续字符尽管使用等宽,但仍在右侧。
例如:
♡ =♡---等宽处略宽。
♛ =♛---等宽空间太宽。
♥ =♥---这遵循我的Windows笔记本电脑上的等宽宽度,但是使用android / chrome浏览时,宽度太宽了。
是否有任何修补程序/变通办法可防止这种异常行为?
我在想,是否有办法“压缩”此类字符的宽度,以确保它们都与固定的字符宽度对齐,并且最好能在不同设备上统一工作?
还是其他可行的解决方案?