A place to cache linked articles (think custom and personal wayback machine)
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Which emoji scissors close (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Is that even respected? Retrospectively? What a shAItshow…
  28. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  29. <meta name="robots" content="noai, noimageai">
  30. <!-- Documented, feel free to shoot an email. -->
  31. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  32. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  36. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  37. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  38. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  39. <script>
  40. function toggleTheme(themeName) {
  41. document.documentElement.classList.toggle(
  42. 'forced-dark',
  43. themeName === 'dark'
  44. )
  45. document.documentElement.classList.toggle(
  46. 'forced-light',
  47. themeName === 'light'
  48. )
  49. }
  50. const selectedTheme = localStorage.getItem('theme')
  51. if (selectedTheme !== 'undefined') {
  52. toggleTheme(selectedTheme)
  53. }
  54. </script>
  55. <meta name="robots" content="noindex, nofollow">
  56. <meta content="origin-when-cross-origin" name="referrer">
  57. <!-- Canonical URL for SEO purposes -->
  58. <link rel="canonical" href="https://wh0.github.io/2020/01/02/scissors.html">
  59. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  60. <article>
  61. <header>
  62. <h1>Which emoji scissors close</h1>
  63. </header>
  64. <nav>
  65. <p class="center">
  66. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  68. </svg> Accueil</a> •
  69. <a href="https://wh0.github.io/2020/01/02/scissors.html" title="Lien vers le contenu original">Source originale</a>
  70. </p>
  71. </nav>
  72. <hr>
  73. <p>Ah, scissors.
  74. They’re important enough that we have an emoji for them.
  75. On your device, it appears as ✂️.
  76. Unlike the real world tool it represents, the emoji’s job is to convey the idea, especially at small sizes.
  77. It doesn’t need to be able to swing or cut things.
  78. Nevertheless, let’s judge them on that irrelevant criterion.</p>
  79. <h2 id="methodology">Methodology</h2>
  80. <p>Conveniently, the emojis studied in this post depict the scissors from a viewpoint parallel to the axis of the hinge.
  81. This allows us to simulate swinging the blades with basic image rotations.
  82. I collected a dataset of emojis from different vendors from <a href="https://emojipedia.org/black-scissors/">Emojipedia</a>.
  83. In the following experiments, I swing the blades around the hinge until the handles collide with each other.</p>
  84. <p>The evaluation is all subjective.</p>
  85. <h2 id="left-handed-scissors">Left handed scissors</h2>
  86. <p>It turns out that some vendors depict left handed scissors, where the top blade swings counterclockwise.
  87. I’ve put these in their own bracket.</p>
  88. <h3 id="messenger">Messenger</h3>
  89. <p><img src="https://wh0.github.io/assets/2020/scissors-messenger-open.png" alt=""></p>
  90. <p><img src="https://wh0.github.io/assets/2020/scissors-messenger-closed.png" alt=""></p>
  91. <p>You get use out of about half of the blade.
  92. It’s not great.</p>
  93. <h3 id="samsung">Samsung</h3>
  94. <p><img src="https://wh0.github.io/assets/2020/scissors-samsung-open.png" alt=""></p>
  95. <p><img src="https://wh0.github.io/assets/2020/scissors-samsung-closed.png" alt=""></p>
  96. <p>These scissors achieve about the same, with half of the blade being usable.
  97. But these ones look like they are better at poking than Messenger’s, so I gave them a slight lead.</p>
  98. <h3 id="joypixels-">JoyPixels 🥇</h3>
  99. <p><img src="https://wh0.github.io/assets/2020/scissors-joypixels-open.png" alt=""></p>
  100. <p><img src="https://wh0.github.io/assets/2020/scissors-joypixels-closed.png" alt=""></p>
  101. <p>These are very good!
  102. It’s probably within the margin of experimental error that they don’t close all the way.
  103. JoyPixels receives the gold medal in left handed scissors.</p>
  104. <h2 id="right-handed-scissors">Right handed scissors</h2>
  105. <p>Now on to the main event, the most popular type of scissors.</p>
  106. <h3 id="microsoft">Microsoft</h3>
  107. <p><img src="https://wh0.github.io/assets/2020/scissors-microsoft-open.png" alt=""></p>
  108. <p><img src="https://wh0.github.io/assets/2020/scissors-microsoft-closed.png" alt=""></p>
  109. <p>Microsoft’s emoji have a heavy black outline.
  110. In my professional opinion, the outline is not part of the scissors depicted.
  111. And even with that concession, the handles collide very early.
  112. You couldn’t cut with these.
  113. I get frustrated just looking at the image of the closed position.</p>
  114. <h3 id="apple">Apple</h3>
  115. <p><img src="https://wh0.github.io/assets/2020/scissors-apple-open.png" alt=""></p>
  116. <p><img src="https://wh0.github.io/assets/2020/scissors-apple-closed.png" alt=""></p>
  117. <p>These scissors look very heavy duty.
  118. But you can’t cut very far at all.</p>
  119. <h3 id="google">Google</h3>
  120. <p><img src="https://wh0.github.io/assets/2020/scissors-google-open.png" alt=""></p>
  121. <p><img src="https://wh0.github.io/assets/2020/scissors-google-closed.png" alt=""></p>
  122. <p>Actually it’s not very clear if these are right handed or left handed.
  123. But these close very little.</p>
  124. <h3 id="facebook">Facebook</h3>
  125. <p><img src="https://wh0.github.io/assets/2020/scissors-facebook-open.png" alt=""></p>
  126. <p><img src="https://wh0.github.io/assets/2020/scissors-facebook-closed.png" alt=""></p>
  127. <p>The handles on these collide very close to the hinge, so they barely close at all.
  128. If you could file those parts down, you could close them a lot more:</p>
  129. <p><img src="https://wh0.github.io/assets/2020/scissors-facebook-closed2.png" alt=""></p>
  130. <p>But you couldn’t, because 📁 is the only file you can get in emoji, so this altered version doesn’t count.</p>
  131. <h3 id="whatsapp-">WhatsApp 🥉</h3>
  132. <p><img src="https://wh0.github.io/assets/2020/scissors-whatsapp-open.png" alt=""></p>
  133. <p><img src="https://wh0.github.io/assets/2020/scissors-whatsapp-closed.png" alt=""></p>
  134. <p>These are pretty good.
  135. They almost fully close.
  136. WhatsApp gets third place.</p>
  137. <h3 id="emojidex-">emojidex 🥈</h3>
  138. <p><img src="https://wh0.github.io/assets/2020/scissors-emojidex-open.png" alt=""></p>
  139. <p><img src="https://wh0.github.io/assets/2020/scissors-emojidex-closed.png" alt=""></p>
  140. <p>These close perfectly!
  141. emojidex gets second place though, because the shading doesn’t inspire confidence in the blade geometry.</p>
  142. <h3 id="lg-">LG 🥇</h3>
  143. <p><img src="https://wh0.github.io/assets/2020/scissors-lg-open.png" alt=""></p>
  144. <p><img src="https://wh0.github.io/assets/2020/scissors-lg-closed.png" alt=""></p>
  145. <p>These also close perfectly.
  146. First place goes to LG!</p>
  147. <h2 id="non-conducive-depictions">Non-conducive depictions</h2>
  148. <p><img src="https://wh0.github.io/assets/2020/scissors-twitter-open.png" alt=""></p>
  149. <p><img src="https://wh0.github.io/assets/2020/scissors-twitter-closed.png" alt=""></p>
  150. <p>These are left handed.</p>
  151. <p>This depiction is highly simplified, so much so that it’s not clear how the handles would interact with each other.
  152. They appear to transition seamlessly from the blade, such that the two handles occupy different depths in the image.
  153. Supposing that the handle materials could “overlap” in the closed position, we would be able to swing these to the point where one handle pokes into the opening of the other handle.
  154. Even if we allow the handles to overlap, they don’t close all the way.
  155. They’d be uncomfortable too, with the place where you actually apply pressure being only half as thick as they should be.</p>
  156. <h3 id="openmoji">OpenMoji</h3>
  157. <p><img src="https://wh0.github.io/assets/2020/scissors-openmoji-open.png" alt=""></p>
  158. <p>These are right handed.</p>
  159. <p>These scissors start out with the handles already overlapping.
  160. We could apply the same lenient overlapping-handles rule from the Twitter experiment, but these don’t even have the hinge drawn.
  161. I traced out the outline of the back blade to judge where would be a good place to put a hinge.</p>
  162. <p><img src="https://wh0.github.io/assets/2020/scissors-openmoji-hinge.png" alt=""></p>
  163. <p>In order to have the hinge centered on the metal part on both sides, it would probably have to be about where the handle starts.</p>
  164. <p><img src="https://wh0.github.io/assets/2020/scissors-openmoji-closed.png" alt=""></p>
  165. <p>With all guesswork and alterations to the experiment, these close pretty well.</p>
  166. </article>
  167. <hr>
  168. <footer>
  169. <p>
  170. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  171. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  172. </svg> Accueil</a> •
  173. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  174. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  175. </svg> Suivre</a> •
  176. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  177. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  178. </svg> Pro</a> •
  179. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  180. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  181. </svg> Email</a> •
  182. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  183. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  184. </svg> Légal</abbr>
  185. </p>
  186. <template id="theme-selector">
  187. <form>
  188. <fieldset>
  189. <legend><svg class="icon icon-brightness-contrast">
  190. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  191. </svg> Thème</legend>
  192. <label>
  193. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  194. </label>
  195. <label>
  196. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  197. </label>
  198. <label>
  199. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  200. </label>
  201. </fieldset>
  202. </form>
  203. </template>
  204. </footer>
  205. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  206. <script>
  207. function loadThemeForm(templateName) {
  208. const themeSelectorTemplate = document.querySelector(templateName)
  209. const form = themeSelectorTemplate.content.firstElementChild
  210. themeSelectorTemplate.replaceWith(form)
  211. form.addEventListener('change', (e) => {
  212. const chosenColorScheme = e.target.value
  213. localStorage.setItem('theme', chosenColorScheme)
  214. toggleTheme(chosenColorScheme)
  215. })
  216. const selectedTheme = localStorage.getItem('theme')
  217. if (selectedTheme && selectedTheme !== 'undefined') {
  218. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  219. }
  220. }
  221. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  222. window.addEventListener('load', () => {
  223. let hasDarkRules = false
  224. for (const styleSheet of Array.from(document.styleSheets)) {
  225. let mediaRules = []
  226. for (const cssRule of styleSheet.cssRules) {
  227. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  228. continue
  229. }
  230. // WARNING: Safari does not have/supports `conditionText`.
  231. if (cssRule.conditionText) {
  232. if (cssRule.conditionText !== prefersColorSchemeDark) {
  233. continue
  234. }
  235. } else {
  236. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  237. continue
  238. }
  239. }
  240. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  241. }
  242. // WARNING: do not try to insert a Rule to a styleSheet you are
  243. // currently iterating on, otherwise the browser will be stuck
  244. // in a infinite loop…
  245. for (const mediaRule of mediaRules) {
  246. styleSheet.insertRule(mediaRule.cssText)
  247. hasDarkRules = true
  248. }
  249. }
  250. if (hasDarkRules) {
  251. loadThemeForm('#theme-selector')
  252. }
  253. })
  254. </script>
  255. </body>
  256. </html>