Help:Illustrator/zh

本頁提供指引與說明,給那些希望使用Adobe Illustrator CC18.1.1版(以及大多數早期版本,也可能是許多之後的版本)設計程式製作SVG檔案的圖形美工師,這些檔案將能有效率,並能在各種瀏覽器中正確呈現。Illustrator是個產生SVG的強大工具——然而,如果您在沒有指導的情況下貿然使用,它也可能會讓您深感沮喪。問題的核心在於 SVG 格式並不是Illustrator的「原生」格式——Illustrator總是可以正確讀取並產生Illustrator格式的圖檔(也就是.ai格式的檔案),但當您要建立無缺點的、可用的SVG檔案時,情況就不一定是這樣了。如果您打算使用Illustrator或已經知道如何使用Illustrator,並想知道如何最好地為維基媒體共享資源製作SVG格式的檔案,本頁就是為您而設的。
不過,在閱讀本頁之前,您可能需要先熟悉一下帮助:可縮放向量圖形(SVG)中的資訊,因為您目前正在閱讀的這一頁,是以熟悉該頁的術語和概念(例如「描邊」、「路徑」和「漸層」)為前提的。該頁面中所提及的內容並非全部都與Illustrator直接相關,但其中有足夠的內容適用於製作SVG檔案,因此在您來此尋求Illustrator特定的建議之前,一定要先預覽過該頁面。
Illustrator和Inkscape以及其他幾個現代繪圖軟體一樣,不需要您學習SVG程式碼。Illustrator的使用者介面幾乎完全是可視化的,不管您用它畫了什麼,它都會產生一個與之相匹配的SVG文件。至少,大部分時間是這樣。然而,要製作一個真正適合使用「在共享資源上」的檔案,對於任何一個由Illustrator製作的SVG檔案,幾乎總會有一些與程式碼相關的事情,必須手動去處理。本頁面將涵蓋這些工作。
請理解本說明書可能包含錯誤。如果您發現任何錯誤,請參與更正。這是一項協同合作性的工作,歡迎並鼓勵各方提供協助。
已知問題
Illustrator中有些設計功能無法轉換成SVG格式。以下是其中幾項:
沿笔画方向和横跨笔画方向的渐变

在Illustrator 18.1.1的“描边”面板中,您既可沿描边方向(沿)和横跨描边方向(横跨)应用渐变,也可在描边内部(内部)应用渐变。然而,前两种渐变在SVG中并无对应代码,若创建带有沿/横跨渐变的描边,当Illustrator生成SVG文件时,该描边将被转换为不可取的点阵图像。核心结论:若需将图像转换为Commons使用的SVG文件,请勿在描边上应用沿线或横向渐变。虽然存在实现类似效果的替代方案,但操作较为复杂。需注意的是,沿线渐变与横向渐变属于Illustrator专有功能,并非SVG原生特性。
请务必记住,有时可通过Illustrator的“渐变”功能实现笔画“沿线”的合理等效渐变效果。由于渐变理论上能覆盖所选笔画集内的全部色域,您可通过以下方式创建“沿线”渐变: 创建两条长度等同于目标笔触“宽度”的笔触,接着用直接选择工具选中两条笔触,按住Shift键依次点击它们,然后点击对象 → 渐变 → 创建。Illustrator将生成一个渐变对象,其渐变效果正是两条笔触之间色彩差异的呈现。
要改变混合效果的“主轴”,使伪渐变描边能沿任意曲线生成,确实存在相应方法。但具体操作细节超出本帮助页面的范围——本页旨在说明通过Illustrator制作SVG图像的方法,而非讲解Illustrator本身的操作技巧。不过提供一个技巧:当您开始使用混合工具进行复杂操作时,Illustrator可能难以流畅生成所需渐变效果。解决方法之一是告知Illustrator:与其生成平滑渐变混合,不如创建包含指定数量中间对象的混合效果——此时需将中间对象数量设置得极高。操作得当的话,效果应与Illustrator常规渐变效果同样平滑。关键要点在于:“渐变”同样属于SVG功能,浏览器解析SVG文件时会将其识别为SVG图像而非劣质的点阵图。
还有一点:Illustrator也能以相同方式有效生成模拟渐变的笔触效果——例如创建两条宽度相同的笔触,每条都应用由任意数量不同颜色组成的渐变,然后使用混合工具将它们连接起来,“接着编辑该混合效果,为其指定极高的渐变步数”, 这样就能生成一个融合对象,其效果与Illustrator的“带横向渐变的描边”极为相似,同时该对象还兼容SVG格式!
使用这类混合效果模拟不同笔触的缺点在于,最终生成的混合效果本质上仍是混合效果而非笔触。笔触的创建与调整相对简单直观,而混合效果则不然。虽然也可通过SVG模糊滤镜在笔画上生成“横向渐变”效果,或在笔画上创建路径并叠加蒙版,但这些方法同样降低了笔画使用的简易性,并严重限制了最终对象的可编辑性(相关效果示例可参见File: Earthworm_head.svg和File:Scallop Diagram2.svg)。
字体、字号与文本框的处理
Illustrator默认将“Myriad Pro”字体设为用户输入文本的默认字体。然而问题在于,Myriad Pro受版权保护,因此不得将含有该字体的文件上传至共享资源。此外,除非重写软件,否则无法永久性地将Illustrator的默认字体更改为其他字体。因此在文档中输入文本前,请务必识别并安装一种或多种可自由使用的免费字体。Arial字体同样受版权保护,应避免使用。不过存在若干高度相似的免费替代方案,其中DejaVu字体家族包含一款无衬线字体,其外观与Arial极为相似,且采用自由授权许可,强烈推荐使用。
请注意,虽然您当然可以通过将文本“轮廓化”来规避此许可问题(参见下文“将文件保存为SVG格式”),但这会严重阻碍协作流程,且存在内存效率低下的问题。
替代字体集
并非所有浏览器在遇到显示DejaVu Sans字体的请求时都能识别该字体。这会造成轻微问题——若未设置备用字体,浏览器可能随意替换为其他字体,从而改变图像在用户端显示效果。解决方案——唯一的解决方案——是手动修改图像最终版本的SVG文件。假设您希望使用DejaVu Sans字体,但愿意接受任何可用的无衬线字体。保存Illustrator文件为SVG格式后,需使用记事本或写字板等纯文本编辑器打开该文件,搜索font family字符串。若文档全程仅使用一种字体,该术语可能仅出现一次(但无法保证)。当您找到该术语时,若文本使用DejaVu Sans字体编写,会发现类似以下内容:
{font-family="'DejaVuSans'";}font-family="DejaVuSans"font-family="'DejaVuSans'"style="font-family:'DejaVuSans';.
在此处您需要编辑代码,使其呈现如下形式:
{font-family="'DejaVu Sans'",sans-serif;}font-family="'DejaVuSans',sans-serif"font-family="'DejaVuSans',sans-serif"style="font-family:'DejaVuSans',sans-serif;
通常可通过程序的“查找和替换”功能实现(请特别注意单引号、双引号、逗号、分号、空格等符号的位置)。单个文档可能存在多个此类版本,请务必确认所有“字体”字段均包含合适的替代字体家族。注意:每个sans-serif字段必须包含连字符,且两侧均不得被引号(无论双引号或单引号)直接包围(某些情况下右侧使用双引号可能被接受,详见上文说明)。此操作可确保任何浏览器遇到该字体家族请求时,即使不识别该字体,至少会为文档启用相近字体。
非标准字体规格
Abode Illustrator还存在生成字体规范时忽略字体粗细和样式方面明确且标准化的语义的问题。此问题也可通过类似上文子章节所述的方法进行修复。
字体大小
Illustrator仅以像素尺寸处理字体。遗憾的是,当浏览器渲染字体时,这种处理方式会导致实际显示效果出现混乱。为使字体在SVG文件中与Illustrator版本保持相同尺寸和位置,您需要在记事本中打开SVG文件后进行额外的手动编辑。搜索关键词“size”:此时仅应出现与“字体大小”相关的结果。请注意Illustrator为字体分配的像素值。您需要将该数值除以16,并替换为新数值。随后在该数值后直接将px替换为em。对文档中所有字号设置进行此操作。例如:假设你在Illustrator中创建文件,将其保存为SVG格式,然后用记事本打开。接着搜索“size”一词,找到文档中{font-size:10px;}这行代码(该行通常紧邻文件的“字体家族”设置行,因此很容易定位)。此时需手动将10px替换为0.625em,使该行变为{font-size:0.625em;}。文档中所有“size”实例均需进行此操作。若文档后续位置需将某些大号文本的字体尺寸改为24px,则需手动将其替换为1.5em。完成文档中所有字体尺寸的修改后,请务必再次保存文件(采用UTF-8编码)。这两项修改——字体家族和字号——必须作为上传至Commons前的最后步骤完成。
若您今后因任何原因使用Illustrator修改SVG或.AI文件并保存,您对字体家族和字号的修改将丢失,必须再次在纯文本编辑器中手动重新输入。目前尚无解决方案能强制Illustrator生成识别替代字体家族的SVG代码,或强制使用“em”单位替代“px”单位进行字号缩放。唯有在上传前进行最终手动编辑,才能确保这些设置得以保留。
文本框

在创建SVG图表时,通常应在文本框中预留空间,以便未来编辑者可替换为更长的词语(例如将文本翻译成外语)。所有文本框创建时都应考虑此潜在需求,且文本框整体尺寸不应导致文本与其他文本框或底层图表元素发生重叠。Illustrator允许用户通过拖拽和点击创建任意尺寸的文本框,并支持任意对齐方式(左对齐、右对齐或居中对齐),不受框内文本实际长度限制。
然而,在转换为SVG格式时,会出现两个问题。首先,所有文本框都会缩小到恰好容纳内部文本的最小尺寸(从而违背了最初创建大文本框的目的)。其次,超过一行的文本会被分割成多个独立的文本框,每行文字对应一个文本框。例如,假设你有一个包含“Upper limit of fuel gauge”文字的文本框,并将其排版为第一行显示“Upper limit of”,第二行显示“fuel gauge”。当Illustrator将其转换为SVG时,这段文字会变成两个文本框:一个包含“Upper limit of”,另一个包含“fuel gauge”。文字在SVG版本的图像中看起来能正常显示,但如果你尝试用Autotranslate工具处理这个SVG文件,该工具将无法识别“Upper limit of”和“fuel gauge”属于同一文本元素,而是会对它们分别进行翻译。只要原始.AI文件中的所有文本框都不包含超过一行的文本,这就不是问题。但当文字内容过长时,这会带来极大的不便。Illustrator在将图像转换为SVG格式时,没有设置选项能确保保留文本框原有的边界或完整性。一种可行的方法是:先用Illustrator将图像保存为无文本的SVG版本,然后在其他能够编辑SVG且不会重构文本框的程序(例如Inkscape)中打开文档进行处理。
文本锚点(对齐方式)
尽管在Illustrator中可以将文本对齐方式设置为居中或右对齐,但问题在于导出SVG时,该对齐设置会被移除,并被替换为绝对变换/平移位置(采用默认文本对齐方式),而非转换为SVG规范中的text-anchor属性。这导致文本在上传至维基媒体后出现错位——因为备用字体的字体度量与SVG文件中预设字体不同,且librsvg渲染的文本在缩放时通常会出现错位现象。截至Illustrator 2020版本,其SVG导出功能仍未支持text-anchor属性。
解决此问题的唯一方法是:将所有文本改为默认左对齐后保存备份.ai文件,使用Inkscape的“内部导入”功能(而非Poppler/Cairo导入)打开该文件,并在Inkscape中重新对齐所有文本。若在Illustrator中使用非左对齐文本,或通过Poppler/Cairo导入,将导致文本在Inkscape中难以处理。
此问题不能成为将文字转换为轮廓的借口,因为这会给其他贡献者的本地化工作带来不便。总而言之,若您计划创建文本密集型SVG文件,从Inkscape或任意文本编辑器开始设计可能更为有利;仅当Inkscape或文本编辑器难以实现时,才应导入Illustrator创建的图形。
同一对象图层中滤镜或特效过多
若尝试对同一对象应用两个SVG滤镜,或同时应用扭曲效果与SVG滤镜,Illustrator 18.1.1将出现故障并生成光栅图像。若需对同一对象应用多重滤镜效果,请将目标对象嵌套至多个图层,并将各滤镜分别应用于其嵌套的独立组中。Illustrator常难以处理同一图层内的多重效果与滤镜。更优方案是创建多个图层,每个图层应用所需渐变效果,并层叠排列。信封变形同样适用此规则:当保存为SVG文件时,Illustrator遇到的任何信封变形都会自动栅格化——即使该变形位于独立图层且未附加其他效果或滤镜。虽然有时可先栅格化信封变形再进行描摹,但此操作几乎总会导致效果不佳。
包含带SVG滤镜符号的符号集
如果您的图像包含Illustrator的“符号集”,且该符号集中的任意符号有一个或多个图层关联了SVG滤镜,则该图层将被渲染为光栅图像(注意:符号集整体通常不会受影响)。当用户试图在符号中模拟渐变效果时(如下文所述,Firefox无法处理此类效果),这种情况尤为不便。单独包含SVG滤镜的符号将正常渲染,但若将其组合成符号集则无法正确显示。
凭空出现的栅格
每当Illustrator遇到无法以SVG代码渲染的图像元素时,它会直接将该元素转换为光栅图像。此过程不会显示错误列表或其他明显提示,且无法指示Illustrator停止生成栅格化图像,也无法告知用户是否已生成栅格化内容。根据您是否选择“嵌入”这些栅格化图像(参见下文“如何保存为SVG”章节),最终上传至Commons的文件中可能包含或不包含这些栅格化内容 (若在本地保存SVG文件时选择“链接”而非“嵌入”位图,每个位图将作为独立文件出现在SVG文件所在目录中——此时至少可通过文件名推测形状特征,有助于在.AI版本中定位问题元素)。上传至共享资源后,任何仍包含光栅组件的SVG文件均应添加{{BadSVG}}标签标记为待清理。理想情况下,您不应向共享资源上传含光栅的SVG图像,因为光栅的存在会削弱生成SVG文件的初衷。
我的图片里包含光栅组件吗?
如何判断图像是否包含光栅组件?唯一可靠的方法是:将文件另存为SVG格式后观察是否出现光栅元素。请尝试以下步骤:先将文件保存为.AI文档(无需关闭),然后点击“文件”菜单,向下滚动至“另存副本”。在此处可指定文件名(Illustrator会自动在文件名后添加“副本”,但您可自定义命名)。同时需选择副本格式:在保存类型框中点击下拉菜单,选择SVG (*.SVG)。此时将显示SVG保存对话框。由于当前仅需提取光栅图层,请勿修改其他选项,仅需确保链接光栅组件的设置为链接,然后点击保存。Illustrator完成保存后将返回原始.AI文件。现在在Illustrator中打开新保存的SVG副本文件,点击窗口菜单,然后选择链接。此时会弹出一个对话框,列出SVG文件中所有光栅化组件(即“链接”)。接下来需在.AI文件中(而非您刚生成的“临时”SVG副本文件)定位并修复这些链接。重复此流程:从.AI文件中移除问题元素→将.AI文件另存为SVG副本→打开SVG文件查找链接。部分链接可能较易定位处理,但某些链接可能难以追踪。最终在将图像上传至Commons前,您应能实现:保存文件为SVG格式→打开副本→开启“链接”窗口→该窗口内无任何内容显示。若能达成此状态,则表明您已生成不含光栅组件的SVG文件(恭喜!)。
您可能会发现链接列表中出现某些无法在.AI文件中定位的元素。Illustrator并不总是能清晰显示这些组件的位置或它们产生光栅化的原因。部分元素可能存在于您完全关闭的图层中,导致难以定位。有时可通过链接的缩略图判断组件性质(“咦,这看起来像我某个图层画的把手——该不会就是它?”)。视觉判断往往是识别并清除光栅化元素的最快途径。
Illustrator 将 SVG 元素转换为点阵图的常见情况之一,是当需要对包含 SVG 滤镜的路径应用路径查找器效果时。例如,当尝试对路径组执行“修剪”操作(通过效果 → 路径查找器 → 修剪)时,若其中任意路径已应用任何类型的SVG滤镜,该路径将被静默转换为名为“<Image>”的新位图图层 (名称两侧带有尖括号),无论您先前为其命名为何。若您发现栅格图层“凭空出现”而感到困惑,请考虑是否曾在某处使用路径查找器修改过含SVG滤镜的图层。若该图层包含您认为对最终图像至关重要的效果或滤镜,现在就需要从头重建。多次犯此错误后,您终将学会避免对含SVG滤镜的图层应用路径查找器效果。
我找到了一个栅格——我现在该怎么处理它?
那么,如果光栅渲染的视觉元素是你真正想要保留的呢?根据你想保留的内容,你可能有几种选择。如果你曾对该元素应用过“风格化”或“Photoshop效果”滤镜,现在就放弃吧:这些效果永远无法正确渲染为SVG组件,因为SVG代码中不存在能生成它们的等效代码。你可以尝试通过其他方式生成类似效果,比如使用各种SVG滤镜,但“样式化”滤镜和“Photoshop效果”滤镜是绝对禁止使用的。
最后,如果图像确实包含光栅图像,除非你在Illustrator的SVG保存对话框中选择“嵌入”(而非“链接”)这些光栅,否则文件将无法上传至Commons——因为它不会包含被链接的文件(即SVG图像会引用自身未包含的对象,而Commons上传向导会检测到并禁止此类操作)。若您能生成不含光栅图像的最终版本,则无需担心此问题。
透明度蒙版中的透明度蒙版
若因任何原因将Illustrator的透明度蒙版嵌套在另一蒙版内部,当文件通过W3C验证器时,可能会出现错误提示:两个蒙版具有相同ID名称,例如“属性id声明重复ID值”,后跟ID代码或您为其中一个蒙版图层命名的名称。虽然此错误可能不会影响最终SVG图像的显示效果,但仍意味着文件未能通过W3C验证,需予以修正。请注意:仅重命名蒙版图层无法解决问题,必须重新排列透明蒙版层级,确保它们不存在嵌套关系。解决此问题后,文件应能通过W3C验证的该项检测(当然,文件仍可能因其他原因导致验证失败!)。
浏览器相关问题
每款浏览器对Illustrator生成的SVG代码的理解可能略有差异。确保图像按预期呈现的唯一方法是尝试在多种浏览器中打开文件,并检查其显示效果是否一致。此外还存在一些特殊情况。若您的SVG文件在浏览器中显示异常,请参考以下问题排查清单:
IE 浏览器
Internet Explorer 与 Illustrator 在符号内放置剪切蒙版的方式不兼容,当在符号中遇到剪切蒙版时会忽略其本身及其内容(即使在 Illustrator 的 SVG 版本文件中剪切蒙版已被“关闭”亦然);Internet Explorer 也不会渲染包含透明蒙版的符号,导致其在最终绘图中缺失。
火狐浏览器(Firefox)
Firefox 无法处理符号或符号集内的渐变路径、渐变描边或滤镜效果,将显示此类符号时省略存在问题的路径/描边/滤镜(符号中其他非渐变/未滤镜的部分仍可正常渲染)。这构成重大问题,因为符号(如同构成它们的路径)通常包含渐变效果。Mozilla 错误 376027 记录了此问题。
Firefox 也不会渲染嵌套在剪裁组内的任何透明区域,将其中内容从生成的图像中剔除——即使在 Illustrator 版本的图像中剪裁蒙版处于“关闭”状态时也是如此。不过,它能够正常渲染位于透明区域内的剪裁蒙版。
但令人有些意外的是,Firefox 确实能够正确渲染混合效果中的渐变——即使构成该混合的两个对象之一恰好是包含渐变的符号。不过,包含该符号本身的混合端点会渲染为空白对象;此外,此功能仅在端点本身并非均为符号时有效:至少其中一个端点必须是常规路径。
在某些情况下,Firefox 不会显示符号内的剪切蒙版,而是将符号创建得如同蒙版根本不存在(尽管在 Illustrator 中它们可能清晰可见)。本文(实际上任何地方)均未提供此现象的原因及解决方案。若您遇到此问题,只能自行解决。
Google Chrome
谷歌Chrome浏览器始终能够以预期格式呈现SVG文件,完整保留其剪裁蒙版、透明效果、渐变效果、符号等特性。讽刺的是,这使得Chrome成为验证SVG文件通用性的最不可靠浏览器:图像在Chrome中正确显示仅意味着Chrome完成了自身任务——并不代表Firefox、IE或Safari也能做到。确保SVG图像在广泛浏览器中正确渲染的唯一方法,是逐一打开测试其显示效果。在为Commons创建SVG文件时,应寻求最低公约数标准。
此类跨平台解释错误几乎肯定还有许多,其中大多数涉及符号、剪切蒙版、透明蒙版、滤镜效果和/或渐变的使用,尽管确切数量尚不清楚。然而,由于最终SVG文件需兼容各类平台的可读性,解决此类问题将成为使用Illustrator时的挑战之一:符号链接可能失效(导致其转化为内存效率低下的路径和描边,但通常优于符号在不同浏览器中渲染异常的情况); 同一路径内的多重渐变填充需拆解为独立堆叠路径,但此举同样会牺牲内存效率;等等。
尺寸考量
SVG格式的优势之一在于其文件体积远小于其他图形格式。在创建文件时务必善用此特性。若绘图中存在大量重复元素,请使用“符号”功能,避免Illustrator反复绘制相同对象。曲线上的控制点过多?使用“平滑”工具(该工具位于“铅笔”工具下方),沿着杂乱的线条点击拖拽,即可清除多余控制点(每个控制点都需编码处理;减少控制点数量——而非缩小对象尺寸——才是保持文件轻量化的关键!)。
在可能的情况下,建议使用Illustrator的对象 → 路径 → 简化路径工具快速清理点过载的对象。当执行如将描边转换为路径等操作时,Illustrator往往会生成大量冗余控制点——简化路径工具通常能在保留原始形状的前提下消除其中多数。原则上应尽量避免将描边转为路径,因为描边通常占用更少的内存资源。
避免使用Illustrator那些好心办坏事的智能图案平铺工具和各种画笔定义(坚持使用基础画笔):这些图案和定义都需要逐条线、逐条曲线地描摹转换为SVG对象,文件体积会因此迅速膨胀到惊人的程度。当然某些情况下此举有其合理性,但通常而言,其带来的文件体积(以千字节计)远超实际价值。
不过,建议在作品的最底层绘制一个简单的白色矩形,就像一张白纸。Illustrator 18.1.1会始终将背景视为“空白”。若图像叠加在不同颜色(如蓝或黑)的背景对象上,呈现效果可能与预期完全不符,文字甚至可能变得无法辨识。Illustrator让操作者感觉是在“白纸”上绘图,但实际绘制的是电子透明胶片的等效介质。为图像指定所需背景将极大提升其表现效果——即便在Illustrator中无法“看到”该背景(当图像上传至Commons时,PNG格式中的棋盘格背景将明确提示背景缺失问题)。
Illustrator 无法实现的功能:更改笔画的重叠顺序
在Illustrator 18.1.1中绘制笔触时,若笔触在某处发生重叠,程序会自动将该笔触中较新的“点”置于图层较深处,使其位于较早绘制的点之下。换言之,若使用铅笔工具进行涂鸦,涂鸦末端的笔触会“隐藏”在先前笔触之下。这可能造成问题——例如当你希望用单一笔触表现某物体在某些位置靠近观众、某些位置远离观众时。由于Illustrator始终将后添加的点置于先前点之后,你无法将同一笔触/路径上的点“向前拖拽”至其他点前方,也无法在同一对象内将任何点“向后移动”。多数情况下这无关紧要,但某些场景下却至关重要。
一种解决方法是在对象上创建一系列剪切蒙版,复制该对象的多份副本,然后利用剪切蒙版将某些笔画/路径部分置于其他部分之前显示,并打破Illustrator自动排序系统的顺序。另一种方法是将对象转换为符号,然后将符号层层叠加,每个符号都置于一个剪切蒙版中,该蒙版展示该图层相对于其他图层应呈现的效果。这两种方法都不简单。
高斯模糊及其它滤镜
Illustrator 18.1.1 并未内置多种滤镜功能,例如创建模糊效果(渐变效果支持,但模糊效果不支持)。若需制作模糊对象(如生成阴影),您可能需要从外部导入合适的滤镜至 Illustrator 中。在文件中使用不同程度的模糊效果往往很有用。以下是一段可复制粘贴到记事本等文本编辑程序中的代码,保存为 SVG 文件(即自定义文件名加 .svg 后缀), 随后通过Illustrator菜单项效果 → SVG滤镜 → 导入SVG滤镜…将文件导入Illustrator。
再次强调一遍,你首先需将以下代码复制粘贴至记事本等空白文本编辑器中创建SVG文件,保存时务必使用.SVG后缀(而非.TXT),随后通过上述菜单选项将文件导入Illustrator。这将生成一组强度各异的高斯模糊效果,可应用于绘图中的对象。请注意,不可对同一对象同时应用两种此类滤镜——否则保存为SVG文件时该对象将转为光栅图像。
因此:将以下代码复制粘贴到记事本中,然后将其保存为“SomethingOrOther.svg”,存放在你能再次找到的位置(并确保将“编码”保存为“UTF-8”而非“ANSI”):
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="792px" height="612px" viewBox="0 0 792 612" enable-background="new 0 0 792 612" xml:space="preserve">
<filter id="AI_GaussianBlur_25">
<feGaussianBlur stdDeviation="25"/>
</filter>
<filter id="AI_GaussianBlur_20">
<feGaussianBlur stdDeviation="20"/>
</filter>
<filter id="AI_GaussianBlur_15">
<feGaussianBlur stdDeviation="15"/>
</filter>
<filter id="AI_GaussianBlur_10">
<feGaussianBlur stdDeviation="10"/>
</filter>
<filter id="AI_GaussianBlur_06">
<feGaussianBlur stdDeviation="6"/>
</filter>
<filter id="AI_GaussianBlur_03">
<feGaussianBlur stdDeviation="3"/>
</filter>
<filter id="AI_GaussianBlur_02">
<feGaussianBlur stdDeviation="2"/>
</filter>
<filter x="0%" y="0%" height="100%" width="100%" id="AI_Alpha_3" filterUnits="objectBoundingBox">
<feTurbulence type="fractalNoise" result="turb" stitchTiles="noStitch" numOctaves="3" baseFrequency="0.2"/>
<feComposite in="SourceGraphic" in2="turb" operator="in"/>
</filter>
<filter x="0%" y="0%" height="100%" width="100%" id="AI_Alpha_2" filterUnits="objectBoundingBox">
<feTurbulence type="turbulence" result="turb" stitchTiles="noStitch" numOctaves="5" baseFrequency="0.05"/>
<feComposite in="SourceGraphic" in2="turb" operator="in"/>
</filter>
</svg>
导入文件至Illustrator后,您将获得多个全新模糊选项及两款全新透明度滤镜供您尝试。您亦可随意修改此代码以创造更多样化的滤镜效果(但请注意:单个字符位置错误都可能导致整个滤镜失效)。
3D旋转
鉴于Illustrator在生成有效SVG文件时挑剔的特性,且考虑到SVG规范本身并未内置呈现三维物体的结构, 你可能会认为Illustrator的“3D旋转”功能——该功能允许艺术家从二维路径创建三维形状,并呈现多角度明暗阴影效果——在转换为SVG时必然会失败并生成光栅图像。事实并非如此:Illustrator会将生成的3D对象转换为一系列SVG形状,这些形状在浏览器中显示时,与在Illustrator中创建的对象完全一致。但需注意以下限制:该对象可能占用大量内存,且若在3D形状上贴图,最终将生成光栅图像(SVG语言无法像Illustrator那样在3D表面绘制曲线)。但若你仅想通过Illustrator的3D旋转功能创建三维外观的对象,再将生成的图像转换为SVG,好消息是该过程可行——前提是对象表面未映射任何内容(当然, 最终查看者无法实现类似“旋转”物体或从原始图像以外角度观察的效果:该物体并非真正意义上的三维实体(即无法多角度观察),其三维特性仅体现在表面呈现阴影与光照效果——如同从特定视角观察真实三维物体时所见)。
然而,当您尝试将包含3D旋转对象的文件提交至W3C验证器时,会收到大量错误提示且文件将被标记为无效。具体原因尚不明确,但可采用以下变通方案:
- 选择包含3D旋转属性的路径
- 点击对象 → 展开外观。此操作将移除3D属性,但保留3D对象的外观。当前您获得的是一系列路径,它们经过有序排列和定位,呈现出与稍早创建的3D旋转体完全相同的外观。所有这些路径仍应处于选中状态。
- 点击对象 → 剪切蒙版 → 释放
当所有对象的剪切蒙版均已解除后,保存文件并再次运行验证器。若一切顺利,您会发现先前与3D旋转对象相关的所有错误均已消失。此时您将获得之前不存在的大量路径堆栈,但至少该文件已更接近W3C标准。
Illustrator无法将3D旋转对象转换为路径内的渐变效果。当3D对象被“展开”时生成的所有路径均为单色路径,这些路径排列后会呈现出类似渐变的效果,但本质上并非真正的渐变。
如何保存Illustrator的SVG文件
Illustrator 18.1.1 软件中用于将文件保存为 SVG 格式的对话框较为复杂。以下是一些建议及说明:
首先,从下拉菜单中选择“文件”,然后选择“另存副本...”。在下一屏幕中,将“保存类型”选项设置为“*.SVG”。请勿勾选“使用画板”选项,否则将生成多个文件名带序号的重复文件。切勿保存为“.SVGZ”或其他非SVG格式。点击“保存”。若需覆盖现有文件,请点击“是”继续操作。
将弹出一个新窗口。顶部菜单用于选择文件的SVG格式。请选择“SVG 1.1”。切勿选择其他文件格式(除非出现更新、更优的格式如SVG 1.2或SVG 2.0,此时可选择其中一种)。在“类型‘参数下应选择’SVG”。此设置可保留文档文本的可编辑性。对于“子集”选项,请选择“常用罗马字符及常用字形”——理论上这将保留文件中所有英语字母及非英语但仍属罗马字母的字符,例如当有人需要将其翻译成法语时,字符ç的字体将得以保留。讽刺的是,此操作似乎仍需遵循前文所述的替代字体家族标注要求。切勿选择“所有字形”:此选项将导致文件体积无谓地膨胀。
接下来,在选项中,您可以选择将图片“嵌入”或“链接”。无论选择哪种方式都无关紧要,因为您应该没有需要嵌入的图片(即光栅图像),对吧?但为了文件的可用性,请选择“嵌入”,因为您必须二选一。切勿勾选“保留Illustrator编辑功能”——此选项会在文件中嵌入<i:pgf …>><![CDATA[(base64编码数据)]]></i:pgf>组,其中包含以Adobe二进制格式存储的图像副本。[1] 这些数据仅对Adobe软件有用; 此外,该区域可能包含与维基媒体许可规范不兼容的数据。
请确保现在点击以下选项的“更多选项”:
高级选项
对于 CSS 属性,选项“呈现属性”将保留您在合成图像时为图层命名的所有名称。其他选项可能会丢失这些信息。但是,使用“呈现属性”保存时,在 W3C 验证过程中可能会产生一系列无意义的错误,提示内容为:“在此处不允许在 SVG 元素 path 上使用 enable-background 属性。” 如果出现这种情况,您可以尝试解决问题(祝您好运),或者选择其他属性进行保存(例如,“样式属性”不会产生此特定错误)。“小数位数”是衡量 Illustrator 将图像点转换为 SVG 代码的精确度:您可以选择任意的小数位数,但对于大多数图像而言,1 到 3 之间的数值通常效果良好,且比 6、8 或 20 更节省内存。请将“编码”保持为“UTF-8”。
接下来,有五个可以勾选的选项,左边三个,右边两个。勾选左边最上面的两个,右边的两个保持空白。左上方的选项写着 减少 <tspan> 元素的输出。若不勾选此项,可能会导致字体显示问题。下方选项写着 响应式。若勾选此项,可能会不必要地增加文件大小。若选择 包含 XMP,您的文件可能无法通过 W3C 验证。
现在点击“确定”。文件将被保存。要查看当前效果,请先在文字编辑器中手动修改文档中的两处内容(字体家族和字号),并保存文件,然后在任意网页浏览器中打开该文件的 SVG 版本。如果一切按计划进行,您现在看到的图像应该与用户在各种平台上所见完全一致。
W3C 时间
既然您认为已经拥有了一个有效且符合经济原则的 SVG 文件,现在是时候检查它能否通过 W3C 验证了。请访问 W3C 验证器 here,并点击“通过文件上传进行验证”。点击“浏览”,定位到您新创建的 SVG 文件,然后点击“打开”。接着点击“检查”,并祈祷一切顺利……如果运气好的话,您很快就会看到一条消息,告知您的文档已通过 W3C 验证。现在,您的文件终于可以上传到共享资源了。
另一方面,如果您的 SVG 文件中出现了一系列错误,您有两种选择。如果图像在不同浏览器中显示正常,那么从技术角度来看,W3C 验证不过是锦上添花。您可以忽略这些错误,但不应将该文件标记为已通过 W3C 验证。另一方面,您也可以尝试修复验证器指出的问题。由于这些结果通常非常技术性且因文件而异,因此在此难以提供具体的解决指导。这些错误往往与Illustrator为保留图像中存在问题的部分(例如同一图层中的多个滤镜等)而不得不生成的栅格图像有关。简化这些部分通常可以减少或消除相关错误的数量。请注意,如果您对 .AI 格式的图像进行了任何修改,在将图像上传至维基共享资源之前,必须重新检查生成的 SVG 文件,并再次修正与字体相关的代码。
很多时候,你会收到一条W3C验证错误提示,但你完全无法理解其含义,而且该错误对图像某部分的影响也让你完全无法猜到。处理此类错误的一种方法是:在记事本等文本编辑器中编辑 SVG 代码,定位出问题的代码行,将其完全删除,保存生成的文件,然后在浏览器窗口中打开查看是否有变化。如果你能发现变化,那就说明你找到了图像中产生该错误代码的部分; 如果你无法通过查看新图像直观判断发生了什么变化,那么你应该再次将其提交给验证器,以确保删除代码后没有产生新的错误——基于这样一种乐观的假设:被删除的代码不会引发错误(尽管有时删除代码会导致后续代码出现错误,而这些错误在删除前并不存在,尤其是那些成组出现的代码,如 <filter>... </filter>)。如果这似乎解决了问题(从 W3C 的角度来看),那么你可以认为问题已解决并继续进行。
其它W3C错误及其处理方法
第 X 行,第 Y 列:属性id声明了重复的ID值SomeNameofthatValue
Illustrator 有一个不当转换,即会为某些对象分配重复的 ID。虽然这在 Illustrator 中不会引发错误,但在 SVG 格式下却无法正常工作(或者说,虽然能运行,但会引发验证错误,这意味着该脚本在技术上“无效”且未通过“验证”)。例如,当你拥有多个相同符号的实例,并将其转换为该符号的独立实例时(例如,为了避免 Firefox 在符号内使用渐变时出现的问题),这种情况似乎就会发生:Illustrator 会将这些符号转换为各自命名的独立实例,这些实例不再是符号而是对象,但可能不会为每个新对象分配完全不同的 ID 名称。
你可能会以为可以通过编辑 SVG 文件来更改某个问题 ID 的名称,但这行不通,因为每个 ID 都与图像中的特定元素相关联,更改名称只会导致 SVG 文件中出现对一个实际上并不存在的命名对象的调用。此外,如果你在 Illustrator 版本的图像中进行任何新修改,然后再次将其保存为 SVG,对 SVG 代码所做的任何修改都将丢失。唯一应该直接修改 SVG 代码的情况是更改字体家族以及调整字体大小格式(如前所述,从“点”改为“em(当前元素字体尺寸(font-size)的 一倍)”)。
解决重复ID错误的第一步,是准确找出图像中哪些对象存在重复ID。W3C验证器会在错误行中显示该元素的ID名称——如果你在创建元素时为每个元素都指定了名称,这将极大有助于定位问题所在。当然,并非所有人都这样做,因此你可能需要采取其他方法。在我最近生成的 此处 图片中,运行验证器时发现名为 New_Symbol_13_33 的对象出现了 ID 重复问题。我已将该符号的各个实例转换为独立元素(因为该符号包含渐变,且我知道若保留为符号,Firefox将无法正确渲染),因此我必须找出该符号名称在图层列表中的出现位置。我还发现,无论该符号具体是什么,我在图像中至少使用了它 33 次。一种可能的识别方法是编辑 SVG 代码,删除该对象/元素的第一个或第二个实例,然后观察在浏览器窗口中显示时能否通过视觉判断其内容。如果能识别出来,我就可以回到 Illustrator 版本中,对其进行调整(最可能的方法是更改名称),重新保存为 SVG 格式,并再次通过 Validator 进行验证,以确认问题是否已解决。
第 X 行,第 Y 列:在此位置不允许在 SVG 元素路径上使用 enable-background 属性。
当您尝试将 Illustrator 文件另存为 SVG 格式时,会弹出“SVG 选项”窗口,在其中的“高级选项”部分,有一个用于调整 CSS 属性的选项。如果此选项设置为“呈现属性”而非“样式属性”,可能会导致此错误(当然,该错误也可能由其他原因引起,但这已是一个已知问题)。请尝试将“CSS 属性”设置为“样式属性”后保存文件,错误应会消失。
第 X 行,第 Y 列:属性 id 声明了重复的 ID 值 SVGID_'‘N’'_
这里的“N”代表某个数字。该错误会成批出现,并附带提示文本,告知您最初在何处为该 SVGID 对象命名。问题在于,您从未给该对象命名过,也无法判断它是什么。当您使用包含渐变蒙版的不透明度,并从 Illustrator 将文件保存为 SVG 格式时,可能会生成 SVGID。Illustrator 本身可能甚至不存在任何名为 SVGID_“任意名称”_ 的对象——该对象的名称是在文件转换过程中被分配的,而非由绘图者本人命名的。你可以尝试完全避免使用透明度蒙版功能来解决此问题,因为该功能普遍存在已知问题。重启 Illustrator 并重新将文件保存为 SVG 格式也可能有所帮助。
标记Illustrator文件
上传完成后,请返回编辑图像文件信息。您应在文件描述中添加两个模板/标签:{{Valid SVG}} 和 {{Created with Adobe Illustrator}},或者更佳的选择是使用模板 {{Adobe Illustrator|v}}。
另请参阅:帮助:可縮放向量圖形(SVG)#SVG文件标记,了解如何对SVG文件进行分类和标记;以及Help:SVG/basic1,获取更多关于如何将Illustrator SVG文件转换为有效SVG文件的指导。
参考资料
- ↑ SVG Cave Map Compatibillty. Retrieved on 6 July 2017.