FontAwesome http://fontawesome.io/ ์์ด์ฝ์ ํฌ๋กฌ์์๋ ์ ๋ ๋๋ง๋์ง๋ง ํ์ด์ด ํญ์ค์์๋ ๋ ๋๋ง๋์ง ์์ต๋๋ค. ์์๋ฅผ ๋ ๋๋งํฉ๋๋ค.
jsfiddle์ ์์ ๋ฅผ ์ค์ ํ ์ ์์ต๋๊น?
์ฌ์ฉ์ ์ ์ ์์ด์ฝ ๊ธ๊ผด๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. Safari ๋ฐ Chrome์์๋ ์๋ํ์ง๋ง Firefox ๋ฐ IE์์๋ ์๋ํ์ง ์์ต๋๋ค.
๋ช ๊ฐ์ง ํ๊ณ ๋ค์๊ณ Firefox 26 ๋ฐ IE 11์์ ์๋ํ๋๋ก ๋ง๋ค์์ต๋๋ค. ๋ฌธ์ ๋ ๋ค์ ์ค์ ๋๋ค.
https://github.com/niklasvh/html2canvas/blob/master/src/Parse.js#L951
์ ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋๋์ง ์ค๋ช ํ๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ๋ด ๊ฐ์ ์ค ์ผ๋ถ๊ฐ ์๋ชป๋์์ ์ ์์ผ๋ฏ๋ก ์์ ๋กญ๊ฒ ์์ ํ์ญ์์ค.
์นํท์ด ์๋ ๋ธ๋ผ์ฐ์ ์์ getComputedStyles์ ์ํด ๋ฐํ๋๋ ๊ฐ์ฒด๋ ๊ฐ์ฒด์ ์ซ์ ์์ฑ { 0: 'fontFamily' }
์ ํ๋กํ ํ์
์ ํค ๊ฐ ์ { fontFamily: 'fontawesome' }
์ค์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Object.keys๋ Object.hasOwnProperty
์ ํจ๊ป for in
๋ฃจํ์ฒ๋ผ ์๋ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ์์ ์๋ตํ๋ฏ๋ก CSS ์คํ์ผ์ด ๋ณต์ฌ๋์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด Object.keys()
, ํํฐ ๋ฉ์๋ ๋ฐ forEach ๋ฉ์๋๋ฅผ for in
๋ฃจํ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
for (var prop in elStyle) {
if (indexedProperty(prop) && prop !== 'cssText') {
// Prevent assigning of read only CSS Rules, ex. length, parentRule
try {
elps.style[prop] = elStyle[prop];
} catch (e) {
h2clog(['Tried to assign readonly property ', prop, 'Error:', e]);
}
}
}
๋ด๊ฐ prop !== 'cssText'
๋ฅผ ํ์ธํ๋ ์ด์ ๋ Firefox์์๋ ํญ์ ๋น ๋ฌธ์์ด (๋ฒ๊ทธ?)์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋น ๋ฌธ์์ด์ ์์ฌ ์์์ ๋ณต์ฌํ๋ฉด fontFamily๊ฐ ๋ค์ ์ฌ์ค์ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@Enome ์ด๊ฒ์ ๋งค์ฐ ์ข์ต๋๋ค. ๋น๋ก ์์ง ํ ์คํธ๋ฅผํ์ง ์์์ง๋ง "Pull Request"๋ฅผ ๋ณด๋ด์ฃผ์ธ์.
๊ฐ์ฌ! : +1 :
@Enome ์ด์ด ์ฃผ์ ์ ๋ํด pull ์์ฒญ์ ํ์ต๋๊น? ํ์ฌ ๊ทธ์ ์ฝ๋๋ฅผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
@fpslater ํ ์์ฒญ์ ํ ์ ์ด ์์ต๋๋ค. ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ฉด html-> canvas ๋ณํ ์๋์์ ๋ฒ์ด๋ ๋์ svg๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.
FontAwesome์ Chrome ๋ฐ PhantomJS์ ๊ฐ์ ์นํท ๋ธ๋ผ์ฐ์ ์์๋ ๋ ๋๋งํ์ง ๋ชปํฉ๋๋ค.
@kmdavis html2canvas v0.5 ๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น?
ํ์ฌ html2canvas v0.5.0-alpha๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ณต์ ๋ ์ ์๊ฑฐ๋ http://jsfiddle.net/3ub69/52/ ๊ฐ ์๋ํ์ง ์๋ jsfiddle์ ๋ํ ๊ฐ๋จํ ์์ ๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๊น?
์ด ๋ฌธ์ ๋ ์์ต๋๋ค. html2canvas v0.5๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ์ด๋ป๊ฒํ๋์? ๋๋ ์ด๊ฒ์ ๋ฌป๋ ์ด๋ฆฌ์์ ๋๋์ด ๋ค์ง๋ง์ด ์ ์ฅ์์ ๊ทธ๋ฌํ ๋ถ๊ธฐ ๋๋ ํ๊ทธ๊ฐ ํ์๋์ง ์์ต๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ถ์ : gem 'rails-assets-html2canvas
๋ฐ ๋ค์ bower.json
ํ์ผ๊ณผ ํจ๊ป rails-assets๋ฅผ ํตํด html2canvas๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
{
"name": "My-App",
"dependencies": {
"html2canvas": "https://github.com/niklasvh/html2canvas"
}
}
https://rails-assets.org/components ์์ ๋ณผ ์ ์๋ฏ์ด rails-assets์๋ <= 0.4.1 ๋ฒ์ ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ ๋ app/assets/javascripts/vendor/
ํด๋์ ์ต์ dist / html2canvas.js๋ฅผ ๊ฐ๋จํ ์ถ๊ฐํ๊ณ ๋น๋ถ๊ฐ ๊ทธ๋ ๊ฒ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ๋งค์ฐ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
@sweetleon html2canvas.js
ํ์ผ์ ์ฌ๊ธฐ์ ์์ ํ ํ์ผ๋ก ๋ฐ๊ฟ๋ณด์ญ์์ค. ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค.
https://github.com/fpslater/fix-html2canvas-webkit-font-conversion
@sweetleon ์ค
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ
fontawesome์ ๋ฌธ์ ๋ 'html2canvas 1.0.0-alpha.12'๋ฒ์ ์์ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.
์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ๊ฐ์ฌ
fontawesome์ ๋ฌธ์ ๋ 'html2canvas 1.0.0-rc.5 ๋ฒ์ ์์ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
fontawesome์ ๋ฌธ์ ๋ 'html2canvas 1.0.0-alpha.12'๋ฒ์ ์์ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.