我不太相信这个问题没有专门针对OpenType字体,但有没有人知道从这些字体中删除字形的方法?
我有一个非常大的文件大小(几乎10MB)的.OTF,我需要缩小它.原因有两个.
1)我正在尝试为网页嵌入做准备,因此文件越小,客户端就越容易.
2)Font Squirrel(用于轻松准备字体文件)有2MB上传限制 - 我知道有其他选择,但到目前为止都没有成功.为了节省浪费时间,我尝试失败的那些是http://fontface.codeandmore.com/和http://www.font2web.com/.CodeAndMore.com似乎有效,但它吐出的字体与我给它的字体完全不同.
请注意我不是字体专家,所以请轻松回答.
我对Microsoft Word使用的编码不太熟悉.如果有人从Word保存.doc或.docx文件,使用的标准编码是什么?
我猜它不是UTF-8,因为生成的文本(粘贴在UTF-8编码的文本文件中)不符合某些标点符号(例如引号).
例如,当粘贴在UTF-8文本文件中时,打开Word'智能引号'会生成一个ì
符号.如果Word确实以UTF-8编码,那么Word如何尝试呈现实际的UTF-8字符?
编辑
经过一番挖掘,我可以看到Microsoft Word .docx文件实际上是一种压缩格式.解压缩会导致许多.xml文件被解压缩.
但是,UTF-8编码的文本文件无法兑现这些"智能"引号仍然令人困惑.任何有启发性的信息都会有所帮助.
刚刚开始使用 Flutter + Material 设计。我注意到,当使用 ThemeData 创建主题时,如果我使用如下内容:
ThemeData(
textTheme: TextTheme(bodyText1: TextStyle(color: Colors.white)),
)
Run Code Online (Sandbox Code Playgroud)
它似乎没有在带有白色文本小部件的简单 GridView 中为文本着色。但是,如果我改变上面的内容来使用bodyText2
它。
bodyText2
在应用程序中使用文本背后的逻辑是什么?有没有一个好地方可以参考在主题情况下使用哪些文本样式名称以及为什么?这些只是通过反复试验获得的知识,还是有一些很好的包罗万象的规则来确定在哪种情况下使用哪种样式?
谢谢。
在开发模式下(本地)使用 Workbox Webpack 插件时,我收到以下服务工作者错误:
PrecacheController.mjs:62 未捕获的 add-to-cache-list-conflicting-entries:传递给“workbox-precaching.PrecacheController.addToCacheList()”的两个条目的 URL 未定义,但修订详细信息不同。Workbox 无法正确缓存和版本化资产。请删除其中一项。
我相信这是因为,当 webpack 重新构建时,它似乎向 precache 调用添加了两次静态资产。一次在service-worker.js
文件中,另一个在precache-manifest.XXX.js
文件中。查看这两个文件,我可以看到在两个地方都添加了块和入口脚本,包括service-worker.js
.
这在生产中不是问题,因为每个构建都会从头开始擦除和重建。
这是我的 Workbox Webpack 插件配置:
new GenerateSW({
swDest: '../service-worker.js',
globDirectory: 'priv/static',
globPatterns: ['**/*.{js,css,png,jpg,gif,woff2}'],
runtimeCaching: [
{
urlPattern: /^https:\/\/js.intercomcdn.com\/[a-zA-Z0-9-/_.]*(js|woff)/,
handler: 'NetworkFirst'
}, {
urlPattern: /^https:\/\/fonts\.googleapis\.com/,
handler: 'NetworkFirst',
options: {
cacheName: 'google-fonts-stylesheets'
}
},
{
urlPattern: /^https:\/\/fonts\.gstatic\.com/,
handler: 'CacheFirst',
options: {
cacheName: 'google-fonts-webfonts',
cacheableResponse: {
statuses: [0, 200]
},
expiration: {
maxEntries: 5,
maxAgeSeconds: 60 * 60 * 24 * 365, …
Run Code Online (Sandbox Code Playgroud) 我在将 Yarn Workspaces monorepo 移植到 TypeScript 时遇到问题。在 monorepo 的先前工作版本中,moduleA
可以从moduleB
.
新移植的代码尝试同样的事情......
/* monorepo/packages/moduleA/src/helpers/misc.ts */
export const someHelper = () => console.log('hello world')
Run Code Online (Sandbox Code Playgroud)
/* monorepo/packages/moduleB/src/index.ts */
import {someHelper} from 'moduleA/src/helpers/index.js'
Run Code Online (Sandbox Code Playgroud)
这会产生错误:
错误 [ERR_MODULE_NOT_FOUND]:找不到从 monorepo/packages/moduleB/lib/index.js 导入的模块“monorepo/node_modules/moduleA/src/helpers/misc.js”
我的两个包的 TsConfig:
{
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"composite": true,
"outDir": "lib",
"rootDir": "src",
"allowJs": true,
"esModuleInterop": true,
"moduleResolution": "node",
"module": "es6"
},
"include": ["src"],
}
Run Code Online (Sandbox Code Playgroud)
并添加了moduleB
包的配置:
"references": [
{
"path": "../moduleA"
}
]
Run Code Online (Sandbox Code Playgroud)
请注意,我正在moduleB
使用tsc …
我知道我应该死在终端中使用git,但我在Mac上使用Git客户端叫做Sourcetree,让整个事情变得更加性感.
问题是我添加到我的设置中的新Synology NAS驱动器.在我的Mac上安装了一个NAS共享文件夹时,Sourcetree在尝试暂存/提交/推送时会发出嘎嘎声.
我的主分支在GitHub上,所以我使用Sourcetree克隆了一个repo到已安装的驱动器.作为一个快速测试,我编辑了一个不重要的文件,保存并观察了客户端中的未分级更改.到目前为止成功; 已编辑的文件将显示在Sourcetree的未暂存窗口中.我去上演吧.致命错误:
git -c diff.mnemonicprefix = false -c core.quotepath = false -c credential.helper = sourcetree add -f - README.md
致命:无法编写新的索引文件
完成但有错误,请参见上文
我查看了隐藏.git
文件夹中索引文件的文件权限(使用NAS目录浏览器,因为Mac没有显示隐藏文件.文件权限是读取,写入,但不执行.允许执行文件,Sourcetree的阶段/提交/推送尝试工作.
显然,我不想每次克隆git存储库时都必须手动调整文件权限,所以有没有人知道为什么Sourcetree/Git没有创建具有更多有用文件权限的repo克隆?
为了记录,我尝试使用GitHub OSX客户端进行相同的操作,这似乎是成功的(无需编辑权限).但我发现GitHub客户端有点原始,并且更喜欢使用Sourcetree.
假设我正在用JavaScript编写一个模块,可以在浏览器和服务器上使用(使用Node).让我们称之为模块.并且假设该模块将受益于另一个名为Dependancy的模块中的方法.这两个模块都已编写为浏览器和服务器使用,即CommonJS样式:
module.js
if (typeof module !== 'undefined' && module.exports)
module.exports = Module; /* server */
else
this.Module = Module; /* browser */
Run Code Online (Sandbox Code Playgroud)
dependancy.js
if (typeof module !== 'undefined' && module.exports)
module.exports = Dependancy; /* server */
else
this.Dependancy = Dependancy; /* browser */
Run Code Online (Sandbox Code Playgroud)
显然,Dependancy可以在浏览器中直接使用.但是如果Module中包含一个var dependancy = require('dependency');
指令,那么"维护"模块就变得更加麻烦.
我知道我能为执行全局检查扶养内模块,就像这样:
var dependancy = this.Dependancy || require('dependancy');
Run Code Online (Sandbox Code Playgroud)
但这意味着我的模块有两个额外的浏览器安装要求:
<script>
我正在构建一个自定义 Webpack 加载器。加载器做什么并不重要,但它以某种方式转换 JSON 并使用 JSON 中的路径来解析某些其他细节。在我的例子中,loader.js
我需要一种获取正在加载的 JSON 文件的原始路径的方法,以便我可以正确解析其他路径。
采用这个简单的加载器和配置:
加载器.js
module.exports = function (source) {
/* Do some file lookups based on source and modify source */
this.callback(null, source)
}
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
module.exports = {
/* ... */
module: {
rules: [
{
test: /\.json$/i,
use: ['loader'],
},
],
},
};
Run Code Online (Sandbox Code Playgroud)
加载程序正在工作(正在使用),但我添加的任何业务逻辑都需要具有路径感知能力,以便它可以在文件系统上进行查找。
因为这是一个 JSON 加载器,所以source
加载器函数中的 var 作为原始 JSON 内容传递,没有有关 JSON 是从哪个文件加载的详细信息。如何从加载器中获取路径信息,以便我可以根据其中的内容执行其他文件查找source
?
如何在Framer Motion中为退出属性实现不同类型的过渡?
<motion.div
initial={{opacity: 0, transform: 'scale(0.5)'}}
animate={{opacity: 1, transform: 'scale(1)'}}
exit={{opacity: 0, transform: 'scale(0.5)'}}
/* I want "type" to be different only for the exit animation */
transition={{ type: "spring", stiffness: 200 }}
></motion.div>
Run Code Online (Sandbox Code Playgroud)
我希望将“spring”过渡用于initial
and animate
,但对于 exit 我想要不同的类型。退出动画正在工作(我正在使用<AnimatePresence>
包装器,但我只是想要不同的退出行为。
采取这个 HTML:
<div id="el1">
<div id="el2">
<div id="el3">
Hello
<div id="el4">
World
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
注意el3
和el4
包含原始文本;即“你好”和“世界”。其他元素(el1
和el2
)仅包含其他元素。
然而,使用纯 JavaScript,它们的所有innerHTML
属性都表明它们包含某种形式的文本。
如何使用纯 JavaScript 来确定特定元素是否包含原始文本作为子元素。在这种情况下,该方法还将识别el3
为包含原始文本(即使此后它还包含另一个元素)。
像这样的东西:
var els = getElementByTagName("*");
for(var i = 0; i < els.length; i++){
if( /* element contains text */ ){
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
这真的只是 RegEx 的工作吗?有了 HTMLElement 的所有属性,您可能会认为会有更好的方法。
没有 jQuery,谢谢。